componentWillReceiveProps执行了两次,为什么

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

阅读 6k
2 个回答

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

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题