在處理程序中一個接一個地分派幾個(同步)動作是一個壞主意嗎?react/redux多個動作
讓我們假設我有3個按鈕:buttonA,buttonB和buttonC。
我的第一個減速知道哪個按鈕被點擊,所以可能看起來像這樣重要的是:
const firstReducer = function(state = [], action){
switch(action.type) {
case types.BUTTON_A_CLICKED:
console.log("button a was clicked");
return state.concat("a");
case types.BUTTON_B_CLICKED:
console.log("button b was clicked");
return state.concat("b");
case types.BUTTON_C_CLICKED:
console.log("button c was clicked");
return state.concat("c");
default:
return state;
}
}
但我的第二個減速只是想知道的是單擊按鈕時(不關心哪按鈕)。我知道我可以這樣做:
const secondReducer = function(state = [], action){
switch(action.type) {
case types.BUTTON_A_CLICKED:
case types.BUTTON_B_CLICKED
case types.BUTTON_B_CLICKED
console.log("some button was clicked");
return state.concat("button");
default:
return state;
}
}
但是,如果我有1000個按鈕?我可以讓我的第二減速器這個樣子的?:
const secondReducer = function(state = [], action){
switch(action.type) {
case types.BUTTON_CLICKED:
console.log("some button was clicked");
return state.concat("button");
default:
return state;
}
}
,並從處理器派遣2分的動作,每按一下按鈕, 一個面向特定按鈕(BUTTON_A_CLICKED) 和一個普通(BUTTON_CLICKED)
onClickHandler(){
dispatch({
type: ACTION_TYPES.BUTTON_A_CLICKED,
});
dispatch({
type: ACTION_TYPES.BUTTON_CLICKED,
});
當然
這是一個愚蠢的例子,我可以調度BUTTON_CLICKED和動作數據發送哪個按鈕被點擊,如果任何減速機感興趣的是信息 - 它可以把它從動作OBJ ..
我執行的每個搜索結果都表示要查看重複數據或傳奇,但我很想知道爲什麼(如果)按照我的建議做是個壞主意。
感謝。
所以我想我應該進入終極版 - 咚的某個時候,好像每個人都使用它。謝謝。 – JimmyBoy
redux-thunk允許您將特殊類型的操作視爲功能。這意味着您可以使用特定的與動作相關的邏輯來擴展純動作。您提供的需要派發與另一個操作相關的操作的示例對於redux-thunk(或類似的包)非常適用。 – biofractal