最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue生命周期和react生命周期對(duì)比【推薦】

 更新時(shí)間:2018年09月19日 10:20:50   作者:文博的博客  
本文通過(guò)實(shí)例代碼給大家介紹了vue生命周期和react生命周期對(duì)比 ,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

個(gè)人認(rèn)為,react和vue的業(yè)務(wù)邏輯是差不多,vue在react上封裝了更簡(jiǎn)潔的方法,使用起來(lái)更加的便捷,如:提供了便捷的指令(v-for,v-if,v-model),還提供了更多的屬性(computed,watch),我還是比較喜歡用react的,更接近js原生,更容易于理解它。

一 vue的生命周期如下圖所示(很清晰)初始化、編譯、更新、銷毀

二 vue生命周期的栗子

 注意觸發(fā)vue的created事件以后,this便指向vue實(shí)例,這點(diǎn)很重要

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>vue生命周期</title>
    <script src="../js/vue.js"></script>
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
  </head>
  <body>
    <div class="test" style="border: 1px black dashed;padding: 8px;">
      {{a}}
    </div>
    <div class="test2" style="border: 1px red solid;margin-top: 10px;padding: 8px;">
      我是內(nèi)容二
    </div>
    <script type="text/javascript">
      var myVue = new Vue({
        el: ".test",
        data: {
          a: "我是內(nèi)容,在控制臺(tái)輸入myVue.a=123456,可以改變我的值"
        },
        created: function () { 
          //在實(shí)例創(chuàng)建之后同步調(diào)用。此時(shí)實(shí)例已經(jīng)結(jié)束解析選項(xiàng),這意味著已建立:數(shù)據(jù)綁定,計(jì)算屬性,方法,watcher/事件回調(diào)。
          //但是還沒(méi)有開(kāi)始 DOM 編譯,$el 還不存在,但是實(shí)例存在,即this.a存在,可打印出來(lái) 。
          console.log("建立");
        },
        beforeCompile: function () {
          console.log("未開(kāi)始編譯");
        },
        compiled: function () { 
          //在編譯結(jié)束后調(diào)用。此時(shí)所有的指令已生效,因而數(shù)據(jù)的變化將觸發(fā) DOM 更新。但是不擔(dān)保 $el 已插入文檔。
          console.log("編譯完成");
        },
        ready: function () { 
          //在編譯結(jié)束和 $el 第一次插入文檔之后調(diào)用,如在第一次 attached 鉤子之后調(diào)用。注意必須是由 Vue 插入(如 vm.$appendTo() 等方法或指令更新)才觸發(fā) ready 鉤子。
          console.log("一切準(zhǔn)備好了");
        },
        attached :function () { //myVue.$appendTo(".test2")暫時(shí)觸發(fā)不了,不知道怎么解決
          //在 vm.$el 插入 DOM 時(shí)調(diào)用。必須是由指令或?qū)嵗椒ǎㄈ?$appendTo())插入,直接操作 vm.$el 不會(huì) 觸發(fā)這個(gè)鉤子。
          console.log("插入DOM成功");
        },
        detached :function () { //觸發(fā)事件 myVue.$destroy(true),其中參數(shù)true控制是否刪除DOM節(jié)點(diǎn)或者myVue.$remove()
          //在 vm.$el 從 DOM 中刪除時(shí)調(diào)用。必須是由指令或?qū)嵗椒▌h除,直接操作 vm.$el 不會(huì) 觸發(fā)這個(gè)鉤子。
          console.log("刪除DOM成功");
        },
        beforeDestroy: function () { //觸發(fā)方式,在console里面打myVue.$destroy();
          //在開(kāi)始銷毀實(shí)例時(shí)調(diào)用。此時(shí)實(shí)例仍然有功能。
          console.log("銷毀前");
        },
        destroyed: function () {  //觸發(fā)方式,在console里面打myVue.$destroy();其中myVue.$destroy(true)是刪除DOM節(jié)點(diǎn),會(huì)觸發(fā)detached函數(shù),但是實(shí)例仍然存在
          //在實(shí)例被銷毀之后調(diào)用。此時(shí)所有的綁定和實(shí)例的指令已經(jīng)解綁,注意是解綁不是銷毀,所有的子實(shí)例也已經(jīng)被銷毀。
          console.log("已銷毀");
        }
    });
    </script>
  </body>
</html>

一、react生命周期

React 生命周期分為三種狀態(tài) 1. 初始化 2.更新 3.銷毀

•初始化

1、getDefaultProps()

設(shè)置默認(rèn)的props,也可以用ufaultProps設(shè)置組件的默認(rèn)屬性.

2、getInitialState()

在使用es6的class語(yǔ)法時(shí)是沒(méi)有這個(gè)鉤子函數(shù)的,可以直接在constructor中定義this.state。此時(shí)可以訪問(wèn)this.props

3、componentWillMount()

組件初始化時(shí)只調(diào)用,以后組件更新不調(diào)用,整個(gè)生命周期只調(diào)用一次,此時(shí)可以修改state。

4、 render()

react最重要的步驟,創(chuàng)建虛擬dom,進(jìn)行diff算法,更新dom樹(shù)都在此進(jìn)行。此時(shí)就不能更改state了。

5、componentDidMount()

組件渲染之后調(diào)用,只調(diào)用一次。

•更新

6、componentWillReceiveProps(nextProps)

組件初始化時(shí)不調(diào)用,組件接受新的props時(shí)調(diào)用。

7、shouldComponentUpdate(nextProps, nextState)

react性能優(yōu)化非常重要的一環(huán)。組件接受新的state或者props時(shí)調(diào)用,我們可以設(shè)置在此對(duì)比前后兩個(gè)props和state是否相同,如果相同則返回false阻止更新,因?yàn)橄嗤膶傩誀顟B(tài)一定會(huì)生成相同的dom樹(shù),這樣就不需要?jiǎng)?chuàng)造新的dom樹(shù)和舊的dom樹(shù)進(jìn)行diff算法對(duì)比,節(jié)省大量性能,尤其是在dom結(jié)構(gòu)復(fù)雜的時(shí)候

8、componentWillUpdata(nextProps, nextState)

組件初始化時(shí)不調(diào)用,只有在組件將要更新時(shí)才調(diào)用,此時(shí)可以修改state

9、render()

組件渲染

10、componentDidUpdate()

組件初始化時(shí)不調(diào)用,組件更新完成后調(diào)用,此時(shí)可以獲取dom節(jié)點(diǎn)。

•卸載

11、componentWillUnmount()

組件將要卸載時(shí)調(diào)用,一些事件監(jiān)聽(tīng)和定時(shí)器需要在此時(shí)清除。

總結(jié)

以上所述是小編給大家介紹的vue生命周期和react生命周期對(duì)比,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • elementUI select組件默認(rèn)選中效果實(shí)現(xiàn)的方法

    elementUI select組件默認(rèn)選中效果實(shí)現(xiàn)的方法

    這篇文章主要介紹了elementUI select組件默認(rèn)選中效果實(shí)現(xiàn)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • vue中通過(guò)使用$attrs實(shí)現(xiàn)組件之間的數(shù)據(jù)傳遞功能

    vue中通過(guò)使用$attrs實(shí)現(xiàn)組件之間的數(shù)據(jù)傳遞功能

    組件之間傳遞數(shù)據(jù)的方式有很多種,之所以有這么多種方式,是為了滿足在不同場(chǎng)景不同條件下的使用。這篇文章主要介紹了vue中通過(guò)使用$attrs實(shí)現(xiàn)組件之間的數(shù)據(jù)傳遞,需要的朋友可以參考下
    2019-09-09
  • vue使用js-file-download插件下載文件亂碼的解決

    vue使用js-file-download插件下載文件亂碼的解決

    這篇文章主要介紹了vue使用js-file-download插件下載文件亂碼的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 簡(jiǎn)單理解vue中Props屬性

    簡(jiǎn)單理解vue中Props屬性

    這篇文章主要幫助大家簡(jiǎn)單的理解vue中Props屬性,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • VUE3?Vite打包后動(dòng)態(tài)圖片資源不顯示問(wèn)題解決方法

    VUE3?Vite打包后動(dòng)態(tài)圖片資源不顯示問(wèn)題解決方法

    這篇文章主要給大家介紹了關(guān)于VUE3?Vite打包后動(dòng)態(tài)圖片資源不顯示問(wèn)題的解決方法,可能是因?yàn)樵诓渴鸷蟮姆?wù)器環(huán)境中對(duì)中文文件名的支持不完善,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • vue中el-table和jsplumb實(shí)現(xiàn)連線功能

    vue中el-table和jsplumb實(shí)現(xiàn)連線功能

    本文主要介紹了el-table和jsplumb實(shí)現(xiàn)連線功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Vue?warn:Property?"state"?was?accessed?during?render解決

    Vue?warn:Property?"state"?was?accessed?during

    這篇文章主要為大家介紹了Vue?warn:Property?"state"?was?accessed?during?render的報(bào)錯(cuò)解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • element可編輯表格驗(yàn)證問(wèn)題解決

    element可編輯表格驗(yàn)證問(wèn)題解決

    本文主要介紹了element可編輯表格驗(yàn)證問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • C#實(shí)現(xiàn)將一個(gè)字符轉(zhuǎn)換為整數(shù)

    C#實(shí)現(xiàn)將一個(gè)字符轉(zhuǎn)換為整數(shù)

    下面小編就為大家分享一篇C#實(shí)現(xiàn)將一個(gè)字符轉(zhuǎn)換為整數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • 通過(guò)vue方式實(shí)現(xiàn)二維碼掃碼功能

    通過(guò)vue方式實(shí)現(xiàn)二維碼掃碼功能

    這篇文章給大家介紹了通過(guò)vue的方式,實(shí)現(xiàn)掃碼功能,實(shí)現(xiàn)步驟分為兩步,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2021-11-11

最新評(píng)論

都江堰市| 平潭县| 扎囊县| 宁明县| 金沙县| 德江县| 澎湖县| 措勤县| 黔西县| 伊宁县| 鄂州市| 烟台市| 武胜县| 兴安县| 乌兰浩特市| 乌鲁木齐县| 得荣县| 沂水县| 多伦县| 荥经县| 屯留县| 普宁市| 盱眙县| 乐陵市| 万山特区| 桐庐县| 玉山县| 宁都县| 怀安县| 大石桥市| 永济市| 同德县| 六枝特区| 清水县| 阿拉善右旗| 临海市| 安康市| 广州市| 承德县| 区。| 镇原县|