componentWillReceiveProps执行了两次,为什么

yzbao
  • 626

背景:
目的简述:点击按钮,调this.props.history.push()引起location的改变,在componentWillReceiveProps中判断prev.location和next.location,如果不相等,就显示遮罩层。
问题:
首先声明当前组件没有子组件。在componentWillReceiveProps中随便打印一个console.log(XXX),这句话执行了(打印)两次,为什么?

回复
阅读 4.4k
2 个回答

看看有没地方修改组件的props了

小哈
  • 214

clipboard.png
请参考此图,那么不难发现,触发cwr的唯一条件是
clipboard.png
那么答案就是父组件render了。

好!如果你问为啥父组件render 两次,接着看图,
clipboard.png
那么不难发现,有两条路。一条初始化,一条是父组件的父组件render了。

那为啥父组件的父组件render 两次,那就去看父组件的父组件的父组件。

对此回答还有疑问继续问,请采纳谢谢

宣传栏