私は React、React Native、および Redux を初めて使用するので、ここ数日間、これらのニュースの概念の多くに頭を悩ませようとしています。
私が今遭遇した問題の 1 つは、アクション オブジェクトをラップしてレデューサーに渡す前に、Action Creator で新しいデータを計算することです。これには、ステート ツリー内の他のブランチからのデータの一部が必要です。通常、これをどのように解決しますか?グローバル状態ツリーの構造を変更するか、このデータを必要とするコンポーネントにマップしますか?
状態ツリーを考えると:
{
ListView:{
dataSource : a ListView.DataSource type
}
SubmitForm:{
title : 'name of title',
text : 'description'
}
isFetchingData: true/false
}
そしておそらく、各ブランチは異なるレデューサーによって処理され、各ブランチのデータは小道具として別々のコンポーネントに渡されます。
シナリオは次のとおりです ( React チュートリアルを Redux を使用して React Native に翻訳しています):
- SubmitForm で [Submit] ボタンがクリックされた
- --> データが送信されていることをストアに通知するアクションをディスパッチしてから、{title,text} を非同期で取得して API サーバーに送信します。
- 成功すると ---> API サーバーから返された dataSource を計算し、結果の dataSource を reducer に渡します (チュートリアルに従って)。また、dataSource を計算するとは、dataSource.cloneWithRows(....) (ここで説明) を意味し、上記のように ListView からの dataSource を必要とします。
したがって、これはステート ツリーの別のブランチからのものであるため、フォーム コンポーネントには dataSource という prop を含めるべきではないと考えました。しかし、それがなければ、目的のデータソースを実現する方法がわかりません。Redux パターンに関する私の理解では、ステート ツリーの構造を変更する (この場合は ListView と SubmitForm をマージする) ことも奇妙です。それで、誰かがこれを理解するのを手伝ってくれますか?ありがとう