博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
componentDidUpdate之后的绘制
阅读量:6251 次
发布时间:2019-06-22

本文共 945 字,大约阅读时间需要 3 分钟。

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

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

图片描述

就如同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。所以,如果我们用了上面的方法,我们会进入无限循环的状态。

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

原文地址:

转载地址:http://pkfsa.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
单独Java文件的通用快速编译方法
查看>>
字符串变枚举变量
查看>>
xyssl-0.8 用mingw编译
查看>>
菜鸟也玩DNS之配置域名解析服务器
查看>>
cacti监控批量加,省时省力又省心。
查看>>
apache+mod_python
查看>>
java.io.StreamCorruptedException: invalid type code: AC
查看>>
docker index服务概述
查看>>
全网备份
查看>>
System Security Services Daemon(SSSD)系统安全服务守护进程
查看>>
遭遇jar包冲突
查看>>
Linux 用命令把同一个用户加入多个组
查看>>
linux修改swap虚拟内存大小
查看>>
Oracle数据库巡检
查看>>
Linux centos的tmpfs文件系统
查看>>
Centos7升级安装openssh7.5(也适用于centos6系统)
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
【scala初学】scala 控制 for while match if
查看>>