加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

reactjs – 如何区分导致React组件渲染的原因:来自组件内部或外

发布时间:2020-12-15 09:35:22 所属栏目:百科 来源:网络整理
导读:我有两个嵌套的反应组件:外部和内部.每当我调用Inner的setState时,都会调用内部组件的渲染.此外,每当我调用外部组件的setState时,都会调用外部和内部组件的render函数. 我想区分这两种情况并检测内部组件的渲染.我的内部渲染功能应该根据具体情况而有所不同
我有两个嵌套的反应组件:外部和内部.每当我调用Inner的setState时,都会调用内部组件的渲染.此外,每当我调用外部组件的setState时,都会调用外部和内部组件的render函数.
我想区分这两种情况并检测内部组件的渲染.我的内部渲染功能应该根据具体情况而有所不同.我怎样才能做到这一点?

解决方法

您可以利用componentWillReceiveProps仅在组件接收新道具时调用的事实(请在此处查看: http://busypeoples.github.io/post/react-component-lifecycle/),而不是在调用setState时调用,更重要的是它们甚至不必是与现有道具不同的道具(根据 https://facebook.github.io/react/docs/component-specs.html#updating-componentwillreceiveprops).所以你应该能够做一些事情

componentWillReceiveProps() {
  this.setState({parentUpdated: true});
}

render() {
  if (this.state.parentUpdated) {
    // Render one way
  } else {
    // Render the other way
  }
}

虽然您还需要在渲染之后以某种方式取消设置,或者只是确保对this.setState的每次调用都包含{parentUpdated:false}.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读