@hebix81633

Как в Redux-Toolkit полностью заменить объект в массиве?

Как в Redux-Toolkit полностью заменить объект в массиве? То есть фактически обновить его полностью, передавая в createSlice - reducer, action с данными, в том числе с id по которому нужно будет найти этот объект в массиве data и заменить его содержимое новыми данными. Конкретно какие поля будут меняться не известно, поэтому менять нужно полностью весь объект.
Найти лучше так?
state.data.forEach(it => {
if (it.id === action.payload.id) {
//не понятно, как обновить
})

или так?
const el = state.data.find((it) => it.d === action.payload.id);

А дальше, как заменить/обновить все поля в этом объекте?
Например есть стейт с таким содержимым и нужно заменить объект с id 2 новыми данными:

data: [
{id: 1, name: '1'},
{id: 2, name: '2'},
{id: 3, name: '3'}
]
  • Вопрос задан
  • 583 просмотра
Решения вопроса 1
@HealSpirit
Т.к redux-toolkit использует immer, то можно так попробовать
state.data.splice(state.data.findIndex((el) => el.id === action.payload.id), 1, action.payload)

Будет ли меняться ссылка на массив и как на это смотрит redux-toolkit, не могу сказать, с toolkit не работал
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы