2015-10-05 36 views
2

我在計劃我的ReactJS/Flux應用時遇到了一些混亂。它將鉤入具有以下端點的WP Api:Flux/ReactJS - 每個API端點一個存儲或一個存儲到所有API端點?

/api/stores/ 
/api/posts/ 
/api/settings/ 

從構建的角度來看,最好的方法是什麼?我的想法目前是有以下幾點:

API - > ActionCreator - >銷售 - > ActionCreator - >查看(S)

這意味着在某些情況下,每個視圖將包含改變聽衆多達三家門店和很多重複代碼的潛力。

另一種替代方法是對許多商店採取一項行動創造者,但我不確定哪種方法最適合可伸縮性。

任何人都可以幫忙嗎?

回答

2

ActionCreator不參與商場和意見只是服務器/存儲或視圖/服務器

API之間 - > ActionCreator - >商店--- binding_eventChange --->查看(S)--actionCreator - >請求...等

對於我的api我使用一個商店爲api的每個端點是一種數據類型。 視圖確實會綁定到許多商店(3,4,5商店等),這就是爲什麼我在幾個子視圖中剪切視圖,每個子視圖綁定到一種類型的數據/商店。 所以我有一個很大的父視圖來渲染幾個小的視圖,它允許簡單的(子)視圖易於閱讀,它也使得代碼非常模塊化,您可以輕鬆地製作子視圖的組合。

編輯: 在您的示例中,您要做什麼是:1.加載您的視圖2.您的視圖正在請求一種數據3.您的商店收到要求的數據。 4.綁定到商店的視圖使用新數據進行更新。

我將在僞代碼很快寫:

1.In您的看法:

componentDidMount() { 
    //calling your actioncreator to init the first call to the server 
    ActionCreator.requestSomeTypeofData(); 
    // Set your store listener so your view can update when the data are here 
    SomeTypeofDataStore.on('change', handler); 
} 

handler: function() { 
    var data = SomeTypeofDataStore.getAll(); 
    this.setState({ data:data }); 
} 
  • 在你actionCreator:

    actionCreator.requestSomeTypeofData = function()MakeAjaxCall(){function(data){Dispatcher.handleViewAction({類型:「SomeTypeofData」, 結果:data }); }

    }

  • 商店:當Ajax調用完成後,新的數據被分派到

  • 基本上你正在使用Dispatcher.register和一個開關來選擇正確的行動商店爲你的商店(我讓你看看這個助焊劑教程,但我想你已經知道了)。 當您註冊新數據時,您還綁定了「更改」事件(請參閱教程以及它們如何使用EventEmitter,這很容易)。(這裏的例子:https://facebook.github.io/flux/docs/todo-list.html#creating-stores

  • 您的看法得到更新事件,調用處理程序與新的數據寄存器的新狀態,重新呈現
  • 我希望這是明確的:)

    +0

    雖然actionCreator將從視圖中觸發事件。例如,在我的代碼中,我有以下內容: componentDidMount(){ StoreActionCreator.getDirectoryStores(); } 從視圖發送一個事件到actionCreator,然後將它分派到商店。 我從您所設置在那裏的ActionCreator與調度員充當單身,處理所有事件,然後假定通過他們關在商店被拾起,如果他們有註冊的動作相匹配,可能使用它檢查開關actionType可能嗎? –

    +0

    我認爲你做得對,我寫了更多細節的東西,但我想你已經理解了它 –

    相關問題