Могу ли я передать простые массивы в избыточном состоянии? - PullRequest
0 голосов
/ 21 мая 2018

Я начал лучше изучать redux +actjs

Например, у меня есть редуктор новостей или списка, который должен возвращать массив, содержащий новости:

const list = [
    {id: 1, title: 'One'},
    {id: 2, title: 'Two'},
    {id: 3, title: 'Three'}
]

export function newsReducer(state = [], action) {
    switch (action.type) {
        case 'GET_NEWS':
            return list
        default:
            return state
    }
}

Этот код работает правильно, но в других статьях я видел, что они передали параметры в [... state, ...] и неизменном формате ...

Так я могу передать параметры просто или я должен передать в неизменяемом формате?

Спасибо

1 Ответ

0 голосов
/ 21 мая 2018

Короче говоря: Да, вы можете передавать простые массивы, если это лучше всего соответствует вашим потребностям.

Если вы собираетесь использовать простой массив, убедитесь, что вы вернули массив new при внесении изменений.

Например:

export function listChangeReducer = (state = [], action) => {
  switch action.type {
    case 'ADD_ITEM':
      // don't do this because you're mutating your state
      // state.push(action.item);
      // instead do this
      state = state.slice();
      state.push(action.item);
      // or alternatively you can use the destruct syntax
      //[...state, action.item];
      return state;

    break;
  }
};

Вы не обязаны использовать структуры данных immutablejs с избыточностью.Просто рекомендуется, чтобы вы случайно не изменили свои структуры данных.

Документация гласит, что данные должны быть неизменными, потому что

Оба Reduxи React-Redux используют поверхностную проверку на равенство.В частности:

Утилита RedRux combReducers поверхностно проверяет изменения ссылок, вызванные вызываемыми им редукторами.

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