React性能優化方案之PureRenderMixin

React性能檢測react

安裝react性能檢測工具 npm i react-addons-perf --save,而後在初始化項目的./app/index.js中寫入如下代碼:npm

//性能檢測
import Perf from 'react-addons-perf'
if(_DEV_){
    window.Perf=Perf
}
複製代碼

在運行以前,先讓react項目啓動起來,而後打開開發者調試面板,在console中輸入Perf.start()開始檢測,在頁面上進行若干的操做之後,執行Perf.end(),終止檢測操做,而後執行Perf.printWasted(),在console中會打印出操做過程的一個列表展現本次性能結果。在實際項目開發中常常會使用它查看項目的性能狀況。bash

若是性能影響不是很大,例如每次操做就消耗幾秒到幾十毫秒,那就沒必要糾結。可是若是浪費過多時間影響到其用戶體驗,那咱們就必須搞定它。app

PureRenderMixin 優化函數

react最經常使用的工具就是PureRenderMixin,使用 npm i react-addons-pure-render-mixin --save,安裝並使用:工具

import React,{Component} from 'react'
import PureRenderMixin from 'react-addons-pure-render-mixin'

class Demo extends Component{
    constructor(props){
        super(props)
        this.shouldComponentUpdate=PureRenderMixin.shouldComponentUpdate.bind(this)
    }
    //省略其餘代碼....
}
複製代碼

react的生命週期hook中有個shouldComponentUpdate,組件每一次改動,都要問一下這個函數是否要執行更新,當這個函數返回true,則執行更新。返回false,則不執行更新。默認的狀況下,這個函數一直會返回true,即一些無效的更新也會執行。性能

爲何會有無效的改動?咱們都知道,在react組件中,state和props的改變都會觸發組件的更新和從新渲染。可是在react中有些時候state和props沒有改變也會觸發更新。這樣就會致使無效的渲染。優化

這裏使用this.shouldComponentUpdate=PureRenderMixin.shouldComponentUpdate.bind(this),其實是對組件原來的shouldComponentUpdate的方法進行重寫,每次更新以前都要查看props和state的是否發生改變,若是改變;就返回false,沒有就返回true。this

因此咱們在react開發中都儘可能在組件中加入PureRenderMixin方法去優化性能。spa

相關文章
相關標籤/搜索