美文网首页学会js,玩转前后端
componentDidUpdate之后的绘制

componentDidUpdate之后的绘制

作者: uncle_charlie | 来源:发表于2018-02-17 11:43 被阅读9次

componentDidUpdate是更新版的componentDidMount方法。在这里可以处理本地的UI元素,可以操作refs,有需要的话也可以开启另外一个绘制过程。

componentDidUpdate方法会传入两个参数:prevProps, prevState。这个正好和componentWillUpdate是相对的。这个两个参数的值就是在方法调用之前的this.propsthis.state

react-tree-update.png

就如同componentDidMountcomponentDidUpdate在所有的子组件都更新之后被调用。如上图,A.0.0componentDidUpdate会先调用,然后是A.0的,最后才是A的。

如何使用

使用componentDidUpdate最一般的情况就是管理第三个的UI组件,以及和本地UI元素交互。比如你使用了Chart库之后:

componentDidUpdate(prevProps, prevState) {
  // 如果数据发生变化,则更新图表
  if(prevProps.data !== this.props.data) {
    this.chart = c3.load({
      data: this.props.data
    });
  }
}

在数据发横变化之后,更新图表

其他绘制过程

我们也可以查找本地的UI元素、获取大小和css的样式等。我们可以更新子组件。这时,可以调用this.setState或者forceUpdate。但是,这样也会引起很多的其他问题。

最糟糕的问题就是在没有检查条件的情况下直接调用setState方法:

componentDidUpdate(prevProps, prevState) {
  let height = ReactDOM.findDOMNode(this).offsetHeight;
  this.setState({
    internalHeight: height
  });
}

默认情况下shouldComponentUpdate方法返回的是true。所以,如果我们用了上面的方法,我们会进入无限循环的状态。

总的来说,一般不需要这么做。而且这样的重绘会造成性能问题。

原文地址:https://developmentarc.gitbooks.io/react-indepth/content/life_cycle/update/postrender_with_componentdidupdate.html

相关文章

  • componentDidUpdate之后的绘制

    componentDidUpdate是更新版的componentDidMount方法。在这里可以处理本地的UI元素...

  • 自定义hook

    实现componentDidUpdate的效果

  • 实战升级react hooks

    getDerivedStateFromProps +componentDidUpdate 使用方法: props属...

  • React Hooks:usePrevious

    今日内容要点 认识类的组件的 componentDidUpdate 实现 usePrevious hook 结合 ...

  • react 滚动

    react组件中新加一条自动滚动到底部: componentDidUpdate() { utils.logs(...

  • 『react』组件的生命周期

    一、生命周期的三个阶段 注意:componentDidUpdate使用setState(),需要对比前后的prop...

  • React更新body滚动状态

    一个弹窗控件如果有滑动(scroll)属性,也会导致body的滚动,使用componentDidUpdate可以更...

  • 绘制贴图造型文字

    这个图是在ai中绘制好样式之后在ps中贴图制作而成的。先在ai中绘制好courage的样式 之后来到ps打开这个字...

  • View的绘制过程

    View的绘制包括如下三个过动作: 注意:View的绘制过程在Activity的onResume()方法之后才进行...

  • sketchup绘制室内组件

    一、绘制门 注意:是在绘制好了户型图之后进行门的绘制步骤: 根据门洞画矩形,然后将该矩形形成的平面创建群组1 进入...

网友评论

本文标题:componentDidUpdate之后的绘制

本文链接:https://www.haomeiwen.com/subject/zxmmtftx.html