码迷,mamicode.com
首页 > 其他好文 > 详细

Redux学习笔记(二) Reducer

时间:2015-11-23 23:35:44      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

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;

 

Redux学习笔记(二) Reducer

标签:

原文地址:http://www.cnblogs.com/bq-med/p/4989894.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!