redux基础

一. Basics

  1. Actions(纯js对象):从application中发送数据到内存使用store.dispatch(),是信息的payloads,必须有type属性(string常量),所有Action存储在Array中,建议使用
  2. ActionCreators:返回一个action(Todo),需要调用
    执行生成action:dispatch(addTodo(text))才执行,并非自动初始化
    —> 执行action:(bound action creator)const boundAddTodo = text => dispatch(addTodo(…))
    —> bound AddTodo(text):使用React-redux的connect();bindActionCreators():捆绑action creators到dispatch()函数
  3. SourceCode

二.Reducers:action未定义state如何改变,用以改变state

  1. Designing the State Shape
    所有的state都作为一个单独的对象:(1)the currently selected visibility filter;(2)the actual list of todos
    状态树:数据和UI状态分开
  2. Handling Actions
    (1)(previousState,action) => newState
    pure function:同样参数值,函数输出相同的结果,结果的求值不会促使任何可语义上的可观察的副作用或输出
    (2)redux会调用reducer,为未定义的initialState,首次不赋值 e.g todo:[]
    (3)不改变state,创建父本Object.assign()
    Object.assign({必须为空},state,…)
    1
    2
    3
    4
    function todoApp(state = initial(state,action){
    -> newState
    -> default: 原state
    })

(4)使用对象扩展语法的优点在组成复杂对象时会更明显

1
2
3
return getAddIds(state.cart.map(id => ({
_____,______
})))