javascript - return语句不是只能出现在函数内吗
本文介绍了javascript - return语句不是只能出现在函数内吗的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
第三个 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) {
case ADD_TODO:
return [
...state,
{
text: action.text,
completed: false
}
]
case TOGGLE_TODO:
return state.map((todo, index) => {
if (index === action.index) {
return Object.assign({}, todo, {
completed: !todo.completed
})
}
return todo
})
default:
return state
}
}
这篇关于javascript - return语句不是只能出现在函数内吗的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文