私はそうのように見えるReduxのサンクを使用するアクション、持っている:Reduxの:再利用可能なアクション
export function fetchData(query) {
return dispatch => {
return fetch(`http://myapi?query=${query}` ,{mode: 'cors'})
.then(response => response.json())
.then(json => { dispatch(someOtherAction(json)) })
}
}
}
をして、私のsomeOtherAction
が実際に状態を更新します。
export function someOtherAction(data) {
return {
action: types.SOME_ACTION,
data
}
}
しかし、私はそれをしたいですfetchData
アクションクリエーターを再利用できるようにして、アプリのさまざまな部分がmyapi
からデータを取得し、それに基づいて状態の異なる部分を持つようにすることができます。
このアクションを再利用する最良の方法は何ですか?フェッチ成功に呼ばれて、それがどのアクションを規定している私のfetchData
アクションの作成者への2番目のパラメータを渡すことが可能です:
export function fetchData(query, nextAction) {
return dispatch => {
return fetch(`http://myapi?query=${query}` ,{mode: 'cors'})
.then(response => response.json())
.then(json => { dispatch(nextAction(json)) })
}
}
}
するか、この種のものを行うための受け入れられた方法はありますか?
アクションに追加の引数を渡すことはできません。 –
私は非常によく似たハッキングをしています。また、 '' fetchData''の追加引数として '' nextErrorAction''を行います。さらに、状態コードが2xxで、 '' dispatch(nextErrorAction(data)) ''と '' reject''のときに '' resolve''と一緒に '' dispatch(nextAction(data)) ''と '' dispatch 4xx/5xx用。それは非常にうまく動作し、ちょうど数行のコードです。 – iamnat
ああ、それは面白いです。追加のパラメータを渡す必要があるかどうかについては、ドキュメントを見つけることができません。私は行動を全く取っておく必要はないと思っていますか? https://github.com/gaearon/redux-thunkは、アクションクリエータの外部でフェッチを行う 'fetchSecretSauce'メソッドを定義しています。 –