реагируйте, не обновляя дочерние компоненты визуально после setstate

#javascript #reactjs #react-component

Вопрос:

После удаления «нарушения» в дочернем компоненте я обновляю состояние в родительском компоненте, однако изменения не обновляются визуально. В состоянии он обновляется, однако не обновляет дочерний компонент. Возможно, это как-то связано с мелкими обновлениями, но я не уверен, как это исправить.

Также мои обновленные данные обновляются, но состояние не обновляется сразу.

Кто-нибудь может мне помочь?

Вот код

 delClick = (id) => {
    console.log('id when it come in: ', id);
    const updatedData = this.state.students.map((student) => {
        return {
            ...student,
            infractions: student.infractions.filter((infraction) => {
                return infraction.id !== id;
            }),
        };
    });
    console.log('updataed data: ', updatedData);
    this.setState({
        students: updatedData,
    });
    console.log('state students: ', this.state.students);
};
 

Комментарии:

1. можете ли вы поделиться тем, как выглядит ваше государство?

Ответ №1:

Когда ваше следующее состояние зависит от старого, вы должны передать функцию для обновления своего состояния следующим образом:

   this.setState((prevState, props) => {
            return {
               students:  prevstate.students.map((student) => {
                   return {
                    ...student,
                    infractions: student.infractions.filter((infraction) => infraction.id !== id;),
                   };
              });
            };
   });
 

Комментарии:

1. Попробовал сделать это таким образом с тем же результатом, он не обновляет дочерние компоненты, но состояние все еще обновляется

Ответ №2:

setState-это асинхронная функция. Попробуйте это:

  this.setState({
     students: updatedData, 
 },() => {
     console.log(this.state.students);
 });
 

Комментарии:

1. Да, конечно, это асинхронно, но он все еще не обновляет дочерний компонент