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

时间:2019-06-30 20:39:20

标签: reactjs redux store

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
}

理想情况下,我也可以对其进行更新

2 个答案:

答案 0 :(得分:1)

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

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;
    }
  };

答案 1 :(得分:0)

您也可以将散布运算符用于传入的对象:

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


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

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

请注意,互动仅次于键,因此您的state.engagement在此示例中将最终为6。