Как сохранить объект с отдельными свойствами в Redux - PullRequest
0 голосов
/ 30 июня 2019

Все еще довольно плохо знаком с 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 ]

1 голос
/ 30 июня 2019

По сути, 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;
    }
  };
0 голосов
/ 30 июня 2019

Вы также можете использовать оператор распространения для вашего входящего объекта:

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


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

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

Обратите внимание, что за захватом идет секунда, которая переопределит ключи, поэтому ваш state.engagement в этом примере будет равен 6.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...