• react 代码优化


    react 代码优化千次阅读
    2018-08-19 19:33:37

    1.减少setstate:setstate会增加render的次数,从而影响性能。如果涉及到与视图层无关的属性,直接当做class实例的属性,而不是state的状态。这样改变这个属性不会造成页面重新的渲染。

    小结:render需要用到的属性放在state和props中。

    2.浏览器的repaint和reflow会影响到性能。回流一定是重绘,重绘不一定是回流 重绘(repaint):对元素的背景颜色,字体样式样式进行设置,如:font-weight、color、background-color. 回流(reflow):因为元素的尺寸,布局,隐藏等改变而需要重新对其进行构建的操作(重构页面)。

    包括: 1、对font-size,margin,padding 等可以改变宽高和布局的style属性(尺寸、内容、距离)的改变。 2、添加、删除(可见元素)的dom操作。 3、用户操作 改变浏览器窗口大小或是字体等 4、对offset**** 、scroll***、client***、width/height的改变(***=Top/Left/Width/Height)

    减少repaint和reflow方法: 1、想要改变元素样式,通过改变元素的 class 名 (尽可能在 DOM 树的最末端改变class) 2、避免设置多项内联样式,因为每个都会造成回流,样式应该合并在一个外部类,这样当该元素的class属性可被操控时仅会产生一个reflow。 3、在操作offset**** 、scroll***、client***、width/height等属性时,先用变量先进行存储,之后进行操作。

    class App extends Component {
        record = false
        onMouseDown = () => {
            this.record = true;
            }
        onMouseUp = () => {
            this.record = false;
            }
        render() {
            return (
                <div>
                	<button onMouseDown={this.onMouseDown} onMouseUp={this.onMouseUp} />
                <div/>);
        }
    }
     
  • 相关阅读:
    安装RVM时报错 curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
    如何查看docker run启动参数命令
    ProxySQL 基础篇
    Kafka too many open files解决
    离线方式搭建本地的nginx yum源
    Ceph配置参数详解
    osd自杀问题跟踪
    由一次slow-request浅谈Ceph scrub原理
    Power Apps 定制提交表单后的效果
    基于arm的Linux内核编译
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/16538721.html
Copyright © 2020-2023  润新知