0

我有以下数据:

Project : {id:10,
           requirements: [{id:1,
                           title:test},
                          {id:2,
                            title:test2}]
          }

action.payload : {id:1,
                  title:changed_title}

我希望id:1 在我的 redux reducer 中更新需求对象。

这是我到目前为止所拥有的,但它似乎没有工作并且它超级混乱:

  case 'requirements_update': return (updateObject(state, project: {...state.project , requirements: state.project.requirements.filter(requirement => 
                                                                                                                                            {if(requirement.requirement_id === action.payload.requirement_id)
                                                                                                                                                
                                                                                                                                            return(action.payload) }
                                                                                                                                            })}))
4

2 回答 2

0

您可以使用地图和 id 检查来更新项目

project : state.project.map(project => project.id === payload.id ? payload : project)
于 2020-07-12T09:11:07.750 回答
0

底部的双重扩展是将当前需求属性与动作负载合并,(动作负载属性将具有优先级,因为它们将覆盖现有的)

case 'requirements_update':
  return {...state, state.project: {...state.project , requirements: state.project.requirements.map(requirement => {
    if (requirement.id === action.payload.id) {
      return {...requirement, ...action.payload}
    } else {
      return requirement
    }
  }}}
于 2020-07-12T09:21:40.450 回答