概要
React Reduxでstateにオブジェクト形式で値を保持する場合、画面から何かしら更新が発生した場合にstateの一部のプロパティだけ、更新したいケースがあると思います。どういうふうに実装したらよいか少し悩んだので、結果のメモを残しておきます。
実装メモ
下記のように2つのアクションタイプで更新するプロパティを各々の、ものだけにするときの実装方法です。対象はreducersになります。
reducer.js
const initialState = {
testObject: {
name1: '',
name2: ''
}
};
export default function inputReducer(state = initialState, action) {
switch (action.type) {
case 'INPUT_NAME1':
return {
testObject: {...state.testObject, name1: action.payload.name1}
};
case 'INPUT_NAME2':
return {
testObject: {...state.testObject, name2: action.payload.name2}
};
default:
return state;
}
}