如何在 Redux 中存储具有单独属性的对象

How to store an object with separate properties in Redux

对 Redux 还是很陌生,我已经很擅长将单个值保存到存储中,但我对如何在一个对象上存储多个相关属性有点困惑。

这似乎与 Object.assign(... 的使用有关,但我不太确定该怎么做。

保存附加属性的正确方法是这样的吗:

export default (state = {}, action) => {
    switch (action.type){

      case actionTypes.SAVE_ENGAGEMENT:
      return {
        ...state,
        engagement: Object.assign({}, action.engagement)
      };
      default:
            return state;
    }
  };

基本上我想要一个在我的商店中具有类似属性的对象:

{
'engagement': 5,
'opened_from_push': true,
'first_accessed_time': 1561927084
}

理想情况下我也能更新它

基本上,Redux 要求您不改变状态,而是 return 一个新状态。 所以我认为你只需要这样做。

export default (state = {}, action) => {
    switch (action.type){
      case actionTypes.SAVE_ENGAGEMENT:
      return {
        ...state,
        engagement: action.payload,
      };
      case actionTypes.SAVE_OPENED_FROM_PUSH:
      return {
        ...state,
        opened_from_push: action.payload,
      };
      case actionTypes.FIRST_ACCESSED_TIME:
      return {
        ...state,
        first_accessed_time: action.payload,
      };
      default:
      return state;
    }
  };

您也可以对传入对象使用扩展运算符:

const state = {
  engagement: 5,
  greeting: true
};


const engagement = {
  engagement: 6,
  opened_from_push: true,
  first_accessed_time: 1561927084
}

return { ...state, ...engagment };

请注意,参与度排在第二位,这将覆盖键,因此您的 state.engagement 在此示例中最终将成为 6。