我有这个减速器。

case UPDATE_ENDPOINT:
  return <IState>state.map(endpoint =>
    endpoint.ocid === action.endpoint.ocid
      ? {
        ...endpoint,
        name: action.endpoint.name,
        hostname: action.endpoint.hostname,
        origin: action.endpoint.origin,
        originType: action.endpoint.originType,
        originValidation: action.endpoint.originValidation,
      }
      : endpoint
  );


假设在我的有效负载中我只有endpoint.nameendpoint.hostname,那么化简器会将未在有效负载中传递的值设置为undefined。如何使减速器仅更新动作有效负载中的值,并使那些不在动作有效负载中的值保持不变?

最佳答案

最简单的方法是使用对象传播语法:

case UPDATE_ENDPOINT:
  return <IState>state.map(endpoint =>
    endpoint.ocid === action.endpoint.ocid
      ? {
        ...endpoint,
        ...action.endpoint
      }
      : endpoint
  );

关于javascript - 如何在不更改没有新值的属性的情况下更新对象的状态?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49391967/

10-09 14:50