Redux におけるレデューサーの 1 つのルールは、状態を読み取り専用として扱い、新しいオブジェクトを新しい状態として返すことです。
しかし、灰色の領域が 1 つあります。厳密に新しいオブジェクトを状態として返さなければならないのでしょうか、それとも同じ状態オブジェクトを返すことができるのでしょうか?
次のような一般的なコードを見るとわかります。
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
が不明な場合は、同じ状態オブジェクトが返されます。したがって、レデューサーは新しい状態オブジェクトを厳密に返す必要はありませんが、同じものを返すことができるという規則があります。しかし、厳密なルールは、状態が読み取り専用でなければならないということですか?