第三个 case 代码段, case COMPELETE_TODO 这块,
第一个return是当满足条件时返回出相应的内容,
第二个return在一个对象的todos属性后面出现的,
我就不太理解了,望热心的朋友指点迷津,谢谢你.
function todoApp(state = initState,action){
switch(action.type){
//改变state的filter,现实现实全部、完成、未完成的选择
case SETFILTER: return Object.assign({},state,
{filter:action.filter}
);
//添加todo
case ADD_TODO: return Object.assign({},state,
{
todos:[...state.todos,{
text:action.text,
complete:false
}]
}
);
//将对应index的任务变为完成状态
case COMPELETE_TODO:return Object.assign({},state,{
todos:return [
...state.slice(0, parseInt(action.index)),
Object.assign({}, state[action.index], {
completed: true
}),
...state.slice(parseInt(action.index)+ 1)
];
}
);
default:
return state;
}
}
哪里的代码?这个写法不是「主流」写法。
另外这个
reducer
只能把任务标为「完成」,但不能重新打开。看看 Redux 官方例子的写法:
function todos(state = [], action) {
switch (action.type) {
}
}