ディスパッチャemit.change()
が必要です。店内で何かが変更されたことをすべてのコンポーネントに知らせるためです。しかし、私は、アクションの中から店舗を直接呼び出すのではなく、アクションをディスパッチする必要がある理由を理解していません。React/Flux - なぜアクションディスパッチャーが必要ですか?
.i.e。むしろこれより
var Dispatcher = require('dispatcher');
var MyActions = {
addItem: function(item){
Dispatcher.dispatch({
action: 'ADD_ITEM',
payload: item
})
}
}
:
var MyStore = require('mystore');
var MyActions = {
addItem: function(item){
MyStore.addItem(item);
}
}
は、複数の店舗が同じイベントに耳を傾けた場合のために、例えばStoreA
とStoreB
が同様ADD_ITEM
を聞くときということですか?私はこれを理由を行う必要がありますか
偉大な答えをありがとう!私はそれに関連するもう一つの質問を持っています。それが私がここでこの質問に最初に来た理由です。私はアクションから値(新しく作成されたアイテムのID)を返し、それを次のアクションに渡す必要があります。他のアクションの後に複数のアクションをディスパッチするのではなく、ストア内のIDを含む次のアクションをディスパッチする必要がありますか?もう1つの質問は[ここ]です(http://stackoverflow.com/questions/33987477/react-flux-return-value-from-flux-dispatcher-store) –
最も良いことは、同じアクションを使用することです。両方のストアでそれを聞いて、それに応じて変更を加えます。実際、それを行う方法は常にあります。あなたはちょっとあなたのコードを微調整する必要があります。この{data_for_store1:{...}、data_for_store2:{...}、アクション: 'ADD_ITEM'}でディスパッチし、両方のストアで同じアクションを使用できるようになりました。これは役に立ちますか? –
これは私が最初にやっていたことでしたが、action1はStoreAに新しいIDを作成し、新しく作成したIDを何とかStoreBに渡す必要があります。ディスパッチャーを変更することでこれを行うことができるので、ディスパッチ後に値を返すことができますか? –