Задать вопрос
@zakharoffam
Начинающий

Как обновить компонент при изменении state?

Имеется компонент
function Tasks(tasksData) {
    return (
        <React.Fragment>
            tasksData.map((task) => (
                <Task
                    key={task.ID}
                    task={task}
                />)
            )
        </React.Fragment>
    )
}


Далее в компоненте выполняются всякие действия и после данная task, которая передана внутрь компонента, удаляется из state, т.е. если ранее было state.tasksData[task0, task2, ..., task10], то после стало state.tasksData[task0, task2, ..., task9].
И вот в чем вопрос, в Redux DevTools я вижу, что необходимые действия прошли, и нужного task у нас из state удален, но, компонент Tasks, так и отображает Task, которой в state уже нет.
Как сделать так, чтобы при удалении task из state, страница ре-рендерилась с новым state?
  • Вопрос задан
  • 848 просмотров
Подписаться 1 Средний 4 комментария
Решения вопроса 1
@dimoff66
Кратко о себе: Я есть
Первое правило Redux - всегда спредить изменяемую величину, иначе редакс не знает, что вы ее поменяли. Используемый вами метод splice не меняет массив, да и map в данном случае бессмысленен. Верный код будет таким:

const index = state.tasksData.findIndex(({ ID }) => ID === payload.ID)
if (index > -1) return {
  ...state,
  tasksData: 
    state.tasksData.slice(0, index).concat(
      state.tasksData.slice(index + 1))
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы