Я начинаю изучать React + хуки. Я сейчас использую Reducer. Но у меня проблема с обновлением моего состояния useReducer. каждый раз, когда я хочу обновить 1 поле в моем состоянии объекта, все остальные поля будут удалены.
Мое решение состоит в том, чтобы передать им все существующие значения, даже если мне нужно обновить только 1 поле. Есть ли более эффективный способ сделать это?
Вот мое решение:
const initialState = {
filter: {
text: "Filter",
list: [],
isActive: false,
message: "",
},
apiList: []
};
const reducer = (state, action) => {
switch (action.type) {
case "SET_FILTER_LIST":
return {
...state,
filter: { ...state.filter,
list: action.payload.list,
isActive: action.payload.isActive,
message: action.payload.message,
text: action.payload.text,
}
};
default:
return state;
}
};
//BELOW - I just want to pass the e.target.textContent to text field. To avoid deleting the other fields. I re-pass all the existing value so it wont get deleted.
const onSelect = e => {
let filter = e.target.textContent;
dispatch({
type: 'SET_FILTER_LIST',
payload: {
list: state.filter.list,
text: filter,
message: state.filter.message,
isActive: state.filter.isActive
}
});
};