这是在Redux Reducer中复制状态的正确方法吗?

时间:2017-11-25 02:45:58

标签: reactjs redux react-redux

过去我使用Object.assign()并以这种方式完成,但最近我被告知使用传播运算符。我想知道这是否是正确的做法,或者这是否正在改变状态?

import constants from '../constants';

const initialState = {
  all: null
};

export default (state = initialState, action) => {
  switch (action.type) {
    case 'ITEM_ADDED':
      return { ...state, all: state.all.push(action.data) };
    default:
      return { ...state };
  }
};

1 个答案:

答案 0 :(得分:3)

使用Array::push方法时发生了突变:

  return { ...state, all: state.all.push(action.data) };

正确的方法是使用spread运算符将对象追加到数组而不是push:

  return { ...state, all: [...state.all, action.data] };