成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用shouldComponentUpdate進(jìn)行性能優(yōu)化

andong777 / 1021人閱讀

摘要:眾所周知,中值的變化,會(huì)導(dǎo)致組件重新渲染。使用就是為了減少不必要的渲染。此方法就是拿當(dāng)前中值和下一次中的值進(jìn)行對(duì)比,數(shù)據(jù)相等時(shí),返回,反之返回。使用進(jìn)行深拷貝,但是遇到數(shù)據(jù)為和函數(shù)時(shí)就會(huì)錯(cuò)。使用進(jìn)行項(xiàng)目的搭建。

眾所周知,react中props,state值的變化,會(huì)導(dǎo)致組件重新渲染。使用shouldComponentUpdate就是為了減少render不必要的渲染。 本文著重回答以下問(wèn)題: 1:如何使用使用shouldComponentUpdate記性優(yōu)化;
shouldComponentUpdate(nexrProps) {
    if (this.props.num === nexrProps.num) {
        return false
    }
    return true;
}

相信大家都知道這種方式,shouldComponentUpdate提供了兩個(gè)參數(shù)nextProps和nextState,表示下一次props和一次state的值,當(dāng)函數(shù)返回false時(shí)候,render()方法不執(zhí)行,組件也就不會(huì)渲染,返回true時(shí),組件照常重渲染。此方法就是拿當(dāng)前props中值和下一次props中的值進(jìn)行對(duì)比,數(shù)據(jù)相等時(shí),返回false,反之返回true。但是此方法面對(duì)復(fù)雜的對(duì)象時(shí),就沒(méi)有效果了,比如說(shuō)props長(zhǎng)成這樣,就沒(méi)法應(yīng)對(duì)了,因?yàn)樵趈s中,object,array,function屬于引用類型,即使改變其中數(shù)據(jù),他們指向的還是同一內(nèi)存地址,所以采用上面的判斷就不行了。

 obj: {
    age: 12,
    name: "xioabbao",
    student: {
        count: 1
    }
}
2: 解決方法有三種:

(1)使用setState改變數(shù)據(jù)之前,先采用es6中assgin進(jìn)行拷貝,但是assgin只深拷貝的數(shù)據(jù)的第一層,所以說(shuō)不是最完美的解決辦法。

const o2 = Object.assign({},this.state.obj)
    o2.student.count = "00000";
    this.setState({
        obj: o2,
    })

(2)使用JSON.parse(JSON.stringfy())進(jìn)行深拷貝,但是遇到數(shù)據(jù)為undefined和函數(shù)時(shí)就會(huì)錯(cuò)。

const o2 = JSON.parse(JSON.stringify(this.state.obj))
    o2.student.count = "00000";
    this.setState({
        obj: o2,
    })

(3)使用immutable.js進(jìn)行項(xiàng)目的搭建。immutable中講究數(shù)據(jù)的不可變性,每次對(duì)數(shù)據(jù)進(jìn)行操作前,都會(huì)自動(dòng)的對(duì)數(shù)據(jù)進(jìn)行深拷貝,項(xiàng)目中數(shù)據(jù)采用immutable的方式,可以輕松解決問(wèn)題,但是又多了一套API去學(xué)習(xí)。

此文章屬于個(gè)人一時(shí)見(jiàn)解,希望大家多多指教。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/108727.html

相關(guān)文章

  • React組件性能優(yōu)化

    摘要:如果組件是純函數(shù)的,就是給組件相同的和組件就會(huì)展現(xiàn)同樣的,可以使用這個(gè)來(lái)優(yōu)化組件的性能。僅用于擁有簡(jiǎn)單和的組件。雖然提供簡(jiǎn)單的來(lái)提升性能,但是如果有更特殊的需求時(shí)怎么辦如果組件有復(fù)雜的和怎么辦這個(gè)時(shí)候就可使用來(lái)進(jìn)行更加定制化的性能優(yōu)化。 React: 一個(gè)用于構(gòu)建用戶界面的JAVASCRIPT庫(kù). React僅僅專注于UI層;它使用虛擬DOM技術(shù),以保證它UI的高速渲染;它使用單向數(shù)據(jù)...

    oysun 評(píng)論0 收藏0
  • 使用React.memo()來(lái)優(yōu)化函數(shù)組件的性能

    摘要:函數(shù)組件上面我們探討了如何使用和的方法優(yōu)化類組件的性能。它的作用和類似,是用來(lái)控制函數(shù)組件的重新渲染的。其實(shí)就是函數(shù)組件的。 原文鏈接: Improving Performance in React Functional Component using React.memo 原文作者: Chidume Nnamdi 譯者: 進(jìn)擊的大蔥 推薦理由: 本文講述了開(kāi)發(fā)React應(yīng)用時(shí)如...

    BetaRabbit 評(píng)論0 收藏0
  • React性能優(yōu)化

    摘要:當(dāng)大家考慮在項(xiàng)目中使用的時(shí)候,第一個(gè)問(wèn)題往往是他們的應(yīng)用的速度和響應(yīng)是否能和非版一樣,每當(dāng)狀態(tài)改變的時(shí)候就重新渲染組件的整個(gè)子樹(shù),讓大家懷疑這會(huì)不會(huì)對(duì)性能造成負(fù)面影響。 當(dāng)大家考慮在項(xiàng)目中使用 React 的時(shí)候,第一個(gè)問(wèn)題往往是他們的應(yīng)用的速度和響應(yīng)是否能和非 React 版一樣,每當(dāng)狀態(tài)改變的時(shí)候就重新渲染組件的整個(gè)子樹(shù),讓大家懷疑這會(huì)不會(huì)對(duì)性能造成負(fù)面影響。React 用了一些黑...

    n7then 評(píng)論0 收藏0
  • 【譯】React應(yīng)用性能優(yōu)化

    摘要:應(yīng)用主要的的性能瓶頸來(lái)自于一些冗余的程序處理以及組件中的的過(guò)程。為了避免這種情況,在你的應(yīng)用中盡可能多的讓返回。使用工具將幫助你找到應(yīng)用程序中特定的性能問(wèn)題。這個(gè)工具跟用起來(lái)很像,但是它是專門(mén)用來(lái)檢測(cè)應(yīng)用性能的。 這段時(shí)間對(duì)自己寫(xiě)的React應(yīng)用的性能做了一些分析以及優(yōu)化,發(fā)現(xiàn)項(xiàng)目中產(chǎn)生性能問(wèn)題的原因主要來(lái)自兩個(gè)方面: 大量的數(shù)據(jù)渲染使組件進(jìn)行不必要的diff過(guò)程,導(dǎo)致應(yīng)用卡頓; 部...

    txgcwm 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

andong777

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<