Reactjs 有没有办法知道调用渲染函数是因为父级修改(props)还是因为内部状态已更改?

Reactjs 有没有办法知道调用渲染函数是因为父级修改(props)还是因为内部状态已更改?,reactjs,Reactjs,我还没反应过来 我想知道是否有任何方法可以知道调用渲染函数是因为父级修改(props)还是因为内部状态已更改 假设我有一个。我希望它的值在按下键(onChange函数)或每次道具(来自父道具)更改时更改您可以比较新旧道具并说明: componentDidUpdate(prevProps, prevState) { Object.entries(this.props).forEach(([key, val]) => prevProps[key] !== val &&

我还没反应过来

我想知道是否有任何方法可以知道调用渲染函数是因为父级修改(props)还是因为内部状态已更改


假设我有一个
。我希望它的值在按下键(onChange函数)或每次道具(来自父道具)更改时更改

您可以比较新旧道具并说明:

componentDidUpdate(prevProps, prevState) {
  Object.entries(this.props).forEach(([key, val]) =>
    prevProps[key] !== val && console.log(`${key} prop was changed`)
  );
  Object.entries(this.state).forEach(([key, val]) =>
    prevState[key] !== val && console.log(`${key} state changed`)
  );
}

您只需在render函数中添加console.log(this.props)或(props),无论哪种情况,它都会在控制台上记录这些道具。

您没有看到放入render方法的html吗?不理解您的注释通常render方法的return()中包含一些html。如果您有一个包含p标签的div,上面写着“test”,并且您看到“test”呈现到您的浏览器中,您肯定知道它被称为“我的问题”,根据您的回答,似乎还不清楚为什么要使用
componentdiddupdate
而不是
componentWillUpdate
componentWillUpdate
现在是不安全的,但是,如果您想在
render
方法之前进行检查,可以使用`getSnapshotBeforeUpdate()``感谢您的回答(我给出了+1),但它没有回答我的问题。也许我不够清楚,所以我更新了我的问题