in this answerと見られるように、ActionCreatorに状態を渡すことはアンチパターンと見なされます。 Redux Thunk Middlewareを使用して状態にアクセスします。React Redux:状態を「アクション」に渡すのがアンチパターンです。解決策は何ですか?
私は、フロントエンドの検索フォームのフィルタに基づいて、サーバーから項目を取得しています。 filters
がストアから来ているので、当然のことながら、私は自分のサーバーにフィルタを渡す必要があるので、私は自分の行動の作成者
export function getResults(filters){
return Axios.get('localhost:80/getresults/',{params:filters}).then(
// do something with results here.
)
}
でこれをやっているが、これはアンチパターンとみなされます。
また、私はReduxのを使用することができますが、このようにサンク:私は状態にアクセスしていますので、
export function getResults(){
return function(dispatch,getState){
var filters = getState().reducer.filters;
return Axios.get('localhost:80/getresults/',{params:filters}).then(
// do something with results here.
)
}
}
これは、アンチパターンとみなされます。
どうすれば正しい方法で実装できますか?私はどこかでAJAXの呼び出しを完全に行うべきですか?
あなたが指摘した答えの主なアイデアは、アクションクリエイターから直接アクセスしないでください(2番目の方法)。しかし、あなたはあなたが示した最初のアプローチであるあなたのアクションクリエイターに任意の議論(州やその他のオブジェクトの一部)を自由に渡すことができます。 – Ziumin
@Ziuminは、「アクションクリエイターにstate.something.itemsなどのデータを渡すことは間違いなく反パターンであり、変更履歴を不明瞭にしてしまいますので、お勧めしません」と答えています。データをアクションに渡しても、アクション内から別のものに渡すのは大丈夫ですか? – PoeHaH
引数としての状態の受け渡しは、アクションが状態から独立した状態になり、状態が存在することを知らないことさえあります。また、いくつかの模擬フィルタを簡単に通過させてテストすることができます。しかし、あなたがアクションクリエイターの中からステートを取得するとステートフルになります。これは 'add(2)'と 'add(2,2) 'のようなものです。どちらをテストするのが簡単ですか?そして、あなたはどの結果を簡単に予測できますか? – Ziumin