は、だから私はアクションをディスパッチする要求のためのaxiosとredux-thunkを使用して、この単純な非同期要求アクションの作成者を持っています。私は別の要求に対して同じアクションの作成者を再利用したい - ので、それぞれの要求は、自身の状態を持っているでしょう。私はいくつかのコードを表示しようとし、次に詳細を説明しようとします。ここに私の行動クリエイター再利用Reduxの反応する非同期要求アクションの作成者/減速
function responseOK(response){
return {
type: RESPONSE_OK,
payload: response,
}
}
function loadingChangedStatus(isLoading) {
return {
type: IS_LOADING,
isLoading: isLoading,
}
}
function handleError(errorID){
return {
type: HANDLE_ERROR,
errorID: errorID,
}
}
export function makeRequest(URL){
return function(dispatch, getSate){
dispatch(loadingChangedStatus(true));
axios.get(URL)
.then(function(response){
dispatch(loadingChangedStatus(false));
dispatch(responseOK(response));
})
.catch(function (response) {
dispatch(loadingChangedStatus(false));
dispatch(handleError('connection_error'));
});
}
}
そして、私の減速reducerRequestです:
export default function(state = {isLoading:false, payload:false,errorID:false}, action){
switch (action.type) {
case IS_LOADING:
return Object.assign({}, state, {
isLoading: action.isLoading,
});
break;
case RESPONSE_OK:
return Object.assign({}, state, {
isLoading: state.isLoading,
payload: action.payload,
});
break;
case HANDLE_ERROR:
return Object.assign({}, state, {
isLoading: state.isLoading,
payload: action.payload,
errorID:action.errorID,
});
break;
default:
return state;
}
}
ここから私の問題
私はそうのような減速を組み合わせる:
import { combineReducers } from 'redux';
import Request from "./reducerRequest";
const rootReducer = combineReducers({
// I WANT EACH OF THESE TO BE SEPARATE INSTANCE BUT USE THE SAME ACTION CREATOR/REDUCER
defaults: Request,
updates: Request,
});
export default rootReducer;
I n私のコンポーネント:
function mapStateToProps({defaults, updates}){
return {defaults, updates}
}
function mapDispatchToProps(dispatch){
return bindActionCreators({ makeRequest}, dispatch);
}
問題:異なる要求に対して私のアクションクリエイターを再利用したい。どうすればよい
- コール
makeRequest('www.defaults.com')
と、私はこの問題を解決するために、画像はすべてのために書くことであろうことができる唯一の方法はそれがdefaults
- コール
makeRequest('www.updates.com')
で終わると、それは今updates
で終わりますコピーペーストするだけたくさん - - 右感じていない、独自のアクションの作成者と自分の減速を要求します。
アクション作成者とレデューサーを再利用して、コンポーネント内にdefaults
とupdates
という2つのインスタンスを作成するにはどうすればよいですか?
C ool、それは働いているようです。私はまだRedux/Reactを初めて使っています。可能であれば教えてください。これが反応/ Reduxの中でいくつかのギャップを埋めるためのベストプラクティスやハッキングまたは回避策のそのちょうどいくつかの並べ替えに向けて考えられていますか? – fjckls
それはかなり標準です。デフォルトの 'combineReducer'ユーティリティは、すべての子減速機関数に与えられたアクションに応答する機会を与えます。したがって、あなたの減速機構造で同じ減速機を2回使用する場合、応答するかどうかを区別するための方法が必要です。また、私のReduxのアドオンのカタログに記載されている同様の作用/減速ラッパーユーティリティの数はhttps://github.com/markerikson/redux-ecosystem-linksで、あります。あなたのためにこの作業の多くを行うことができるいくつかがあると考えてください。 – markerikson