过去我使用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 };
}
};
答案 0 :(得分:3)
使用Array::push
方法时发生了突变:
return { ...state, all: state.all.push(action.data) };
正确的方法是使用spread运算符将对象追加到数组而不是push:
return { ...state, all: [...state.all, action.data] };