为了账号安全,请及时绑定邮箱和手机立即绑定

return语句不是只能出现在函数内吗

return语句不是只能出现在函数内吗

jeck猫 2018-09-07 09:09:04
第三个 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;   } }
查看完整描述

1 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

哪里的代码?这个写法不是「主流」写法。

另外这个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

}
}


查看完整回答
反对 回复 2018-09-30
  • 1 回答
  • 0 关注
  • 1220 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信