如何在React和Redux中使几个字段可编辑?

时间:2019-08-14 13:46:38

标签: reactjs redux

我的对象处于还原状态

const obj = {
 name: 'name',
 age: 2,
 place: 0,
}

我在页面上显示了这些值,但我想使其中两个可编辑,以便可以更新对象。

为此,我基本上是从两个输入中获取值并将它们发送到我的action

export const saveEditedData = data => dispatch => {
  dispatch({
    type: CHANGE_DATA,
    data,
  });
 }

然后在减速器中

 case 'CHANGE_DATA': 
      return {
        ...state,
        obj: {
         ...state.obj,
         name: action.data.name,
         age: action.data.age,
       }
    }

我面临的问题是,如果一个值被更新,而另一个值未更新,那么在执行此操作后,我的第二个值将为空。

我的问题是确定哪个字段被更改并仅对其进行更新的一种好方法?

到目前为止,我只想出要付诸行动if else来派遣某些事情。也许有更好的方法?

1 个答案:

答案 0 :(得分:0)

您可以1.使用各个动作changeNamechangeAge等对每个字段进行更新,或2.在将动作有效载荷放入{{ 1}}:

obj

case 'CHANGE_DATA': return { ...state, obj: { ...state.obj, ...action.data.filter(el => !!el) } } 表示在过滤时将数组元素转换为布尔值,并非严格必要,但很卫生)

编辑:对不起,我误解了您的数据形状,请参阅注释。