Redux 中 reducer 的一个规则是:我们应该将 state 视为只读,并返回一个新对象作为新 state。
但是有一个灰色地带:它必须严格返回一个新对象作为状态,还是我们可以返回相同的状态对象?
似乎通过查看常见代码,例如:
function favoriteColors(state, action) {
if (state === undefined) {
state = [];
}
if (action.type === 'ADD') {
return Array.from(new Set([...state, action.color])); // new array
} else if (action.type === 'REMOVE') {
return state.filter(color => color !== action.color); // new array
} else {
return state;
}
}
如果action.type
未知,则返回相同的状态对象。所以规则是reducer不必严格返回一个新的状态对象,但可以返回相同的。但是严格的规则是状态必须是只读的?