redux
1,action是用户行为的抽象,我们可以抽象为一个对象
{
type:“add”,
payload:xxx
}
type可以理解为是action的目标,比如这个可能是文本输入框,payload是载荷,承载了这个行为中对原state增加或删改的数据
2,reducer是系统响应的抽象,它是一个函数
const reducer=(state,action)=>{
switch (action.type) {
case 'add_todo':
return state.concat(action.text);
default:
return state;
}
}
reducer传入两个参数,原状态和action,
每一个reducer都对应了一个action,并根据action携带的荷载对原数据进行修改,返回一个新的state,
比如:
var addAction={type:"add",number:1}
reducer(state=0,addAction){
return state+addAction.number
}
输出的新state结果则为1(为demo方便省掉了reducer函数里的type分支)
3,每一个action都要reducer处理,这样会导致reducer内部的type分支会很庞杂,解决方法是引入redux的combineReducers方法,将所有的子reducer合并到根reducer中,state的属性对应相应的action,在createStore(reducer)时传入根reducer,那么状态变化会自动触发对应reducer的计算行为