Javascript 为什么再次调用getDerivedStateFromProps,即使父Props不是';更新了吗?

Javascript 为什么再次调用getDerivedStateFromProps,即使父Props不是';更新了吗?,javascript,reactjs,Javascript,Reactjs,我在React中遵循了生命周期方法&我在该指南中调整了一个演示,有点像 这是一个简单的应用程序,它使用了React的所有新生命周期方法,每10秒向底部添加网格(因此等待10秒,然后查看控制台) 我理解getDerivedStateFromProps的方式是,当父级道具更改时,它们会被调用,但在这个沙盒中,如果您检查控制台,即使道具没有更改,它也会被调用 我添加了一些有用的console.log来跟踪订单 现在,它在控制台中显示这一点 getDerivedStateFromProps - 1, 4

我在React中遵循了生命周期方法&我在该指南中调整了一个演示,有点像

这是一个简单的应用程序,它使用了React的所有新生命周期方法,每10秒向底部添加网格(因此等待10秒,然后查看控制台

我理解getDerivedStateFromProps的方式是,当父级道具更改时,它们会被调用,但在这个沙盒中,如果您检查控制台,即使道具没有更改,它也会被调用

我添加了一些有用的
console.log来跟踪订单

现在,它在控制台中显示这一点

getDerivedStateFromProps - 1, 4 
render - 2, 6 
render - 2
componentDidMount - 3 
getDerivedStateFromProps - 1, 4 
这意味着

由于
1,4
render
由于
2,6
render
在我们可以忽略的错误组件之后调用错误组件 由于
3
getDerivedStateFromProps
由于
1,4

现在我明白了其他的命令。我只是不明白为什么第四次调用
getDerivedStateFromProps


有人能解释为什么会发生这种情况,因为我在第一次之后没有看到任何道具更改吗?

首先,在React 16.3版本中,更新道具()时刚刚调用了getDerivedStateFromProps()。但现在在React 16.4版本中,更新道具和更新状态时(无论重新渲染的原因如何)会调用
getDerivedStateFromProps()
。那么在你的情况下,

在该条件下,在render()方法之前调用
getDerivedStateFromProps()

  • 初始安装
  • 每个状态和道具更新

  • 您的组件将在每10秒更新一次块时呈现,因此,
    getDerivedStateFromProps()
    将在每10秒调用一次。

    谢谢,@sdkcy按照您的解释很简单:)