Javascript 如何在不更改没有新值的属性的情况下更新对象的状态?

Javascript 如何在不更改没有新值的属性的情况下更新对象的状态?,javascript,redux,reducers,redux-actions,Javascript,Redux,Reducers,Redux Actions,我有这个减速机 case UPDATE_ENDPOINT: return <IState>state.map(endpoint => endpoint.ocid === action.endpoint.ocid ? { ...endpoint, name: action.endpoint.name, hostname: action.endpoint.hostname, origin:

我有这个减速机

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
  );
案例更新\u端点:
返回状态.map(端点=>
endpoint.ocid==action.endpoint.ocid
? { 
…终点,
名称:action.endpoint.name,
主机名:action.endpoint.hostname,
原点:action.endpoint.origin,
originType:action.endpoint.originType,
originValidation:action.endpoint.originValidation,
}
:端点
);

假设在我的操作负载中,我只有
endpoint.name
endpoint.hostname
,那么减速机会将负载中未传递的值设置为
未定义的
。如何让reducer只更新操作负载中的值,而保留操作负载中没有的值不变?

最简单的方法是使用对象扩展语法:

case UPDATE_ENDPOINT:
  return <IState>state.map(endpoint =>
    endpoint.ocid === action.endpoint.ocid
      ? { 
        ...endpoint, 
        ...action.endpoint
      }
      : endpoint
  );
案例更新\u端点:
返回状态.map(端点=>
endpoint.ocid==action.endpoint.ocid
? { 
…终点,
…action.endpoint
}
:端点
);

最简单的方法是使用对象扩展语法:

case UPDATE_ENDPOINT:
  return <IState>state.map(endpoint =>
    endpoint.ocid === action.endpoint.ocid
      ? { 
        ...endpoint, 
        ...action.endpoint
      }
      : endpoint
  );
案例更新\u端点:
返回状态.map(端点=>
endpoint.ocid==action.endpoint.ocid
? { 
…终点,
…action.endpoint
}
:端点
);