标签:
Action只是描述了有事情发生了这一事实,并没有指明应用如何更新 state。这是 reducer 要做的事情。
reducer 就是一个函数,接收旧的 state 和 action,返回新的 state。
function todos(state = [], action) { switch (action.type) { case ADD_TODO: return [...state, { text: action.text, completed: false }];default: return state; } }
如上,不直接修改 state
中的字段,而是返回新对象。新的 todos
对象就相当于旧的 todos
在末尾加上新建的 todo。而这个新的 todo 又是在 action 中创建的。
注意每个 reducer 只负责管理全局 state 中它负责的一部分。每个 reducer 的 state
参数都不同,分别对应它管理的那部分 state 数据。
Redux 提供了combineReducers(),把一个由多个不同 reducer 函数作为 value 的 object,合并成一个最终的 reducer 函数,然后就可以对这个 reducer 调用createStore.
合并后的 reducer 可以调用各个子 reducer,并把它们的结果合并成一个 state 对象。state 对象的结构由传入的多个 reducer 的 key 决定。
import { combineReducers } from ‘redux‘; import { ADD_TODO } from ‘./actions‘;
function todos(state = [], action) { switch (action.type){ case ADD_TODO: return [...state, { text: action.text, completed: false }]; default: return state; } }
const todoApp = combineReducers({todos
});
export default todoApp;
标签:
原文地址:http://www.cnblogs.com/bq-med/p/4989894.html