ComponentDidUpdate 和 SetState 回调函数的区别

Difference between ComponentDidUpdate and SetState callback function

我对我的 React 本机应用程序中遇到的一个错误做了一些研究

Warning: An update (setState, replaceState, or forceUpdate) was scheduled from inside an update function. Update functions should be pure, with zero side-effects. Consider using componentDidUpdate or a callback..

我已经研究过了,但我仍然无法理解它们之间的区别。我的理论想法是从对象数组中删除一个元素,但是当我将 setState 与回调函数一起使用时,我得到了错误。任何人都可以指出正确的方向或向我展示如何使用 componentDidUpdate 的示例。下面的代码示例目前有效,但我觉得它可以改进,我相信这就是我收到错误的原因

  Delete_Task = (e) => {
    this.setState(prevState => {
      const tasks = prevState.daily.filter(task => task.ID !== e);
      this.setState({daily: tasks});
    })
  }

您需要return新的状态对象,而不是在外部 setState 回调中调用另一个 setState

改变

this.setState({daily: tasks});

return {daily: tasks};
// OR 
return {...prevState, daily:tasks}