在此示例中,我使用名为ADD_TODO的操作
import { createStore, combineReducers } from 'redux';
function todos(state, action) {
state = state || [];
switch (action.type) {
case 'ADD_TODO':
return state.concat([ action.text ]);
default:
return state;
}
}
function counter(state, action){
state = state || 0;
switch (action.type){
case 'INCREMENT':
return state+1;
case 'DECREMENT':
return state-1;
case 'ADD_TODO':
return state+100;
default:
return state;
}
}
var app = combineReducers({
todos: todos,
counter: counter
});
var store = createStore(app);
store.dispatch({ type: 'ADD_TODO': text: 'buy eggs' });
Run Code Online (Sandbox Code Playgroud)
这会导致“ 待办事项 ”和“ 计数器 ”减速器均被触发。除非我确实打算,否则是否应让所有减速器采取独特的动作?
我们如何用几乎做同一件事的多个reducer来实现呢?例如,多个计数器可以具有“ INCREMENT”和“ DECREMENT”动作。
名称间隔动作应该解决吗?
例如:“ POINT_INCREMENT”,“ POINT_DECREMENT”。
让不同的减速器响应相同的操作本质上并没有什么问题——例如,如果您立即刷新整个状态。但是,是的,如果您有两个对应于不同事物的计数器,您可能需要想出一个命名方案来区分。但我认为动作名称可能应该有一些名词来表明它们适用于什么。
归档时间: |
|
查看次数: |
938 次 |
最近记录: |