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

淺談vue生命周期共有幾個階段?分別是什么?

 更新時間:2020年08月07日 14:55:22   作者:brain_bo  
這篇文章主要介紹了淺談vue生命周期共有幾個階段?分別是什么?具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

一共8個階段

1、beforeCreate(創(chuàng)建前)

2、created(創(chuàng)建后)

3、beforeMount(載入前)

4、mounted(載入后)

5、beforeUpdate(更新前)

6、updated(更新后)

7、beforeDestroy(銷毀前)

8、destroyed(銷毀后)

vue第一次頁面加載會觸發(fā)哪幾個鉤子函數(shù)?

beforeCreate、created、beforeMount、mounted

DOM 渲染在哪個周期中就已經完成?

mounted

補充知識:記錄一次vue數(shù)據(jù)不同步的排查

今天我遇到了一個vue異步獲取數(shù)據(jù)后視圖沒有更新的問題,排查了很久很久,最后才發(fā)現(xiàn)自己踩在了一個自己萬萬沒有想到的坑上,所以記錄一下。

常見的解決方案

關于vue數(shù)據(jù)不同步的排查已經有很多類似的博客了,一般而言,原因有一下幾點:

數(shù)據(jù)沒有設置成功

設置的數(shù)據(jù)不是響應式的

設置的數(shù)據(jù)和視圖上的變量不是同一個,可能設置錯了變量

既然寫到類似話題,我也羅列一下相關的解決方案:

使用this.$set(),

可以嘗試類似this.data=JSON.parse(JSON.stringify(data))去排查是不是數(shù)據(jù)劫持的問題。

這個我一個同事遇到過一次,他發(fā)現(xiàn)他的變量里面部分屬性沒有設置get/set(就是沒有被vue監(jiān)聽到,所以無法響應式),原因大概是他在原變量上加了新屬性,但是沒有被vue監(jiān)聽到。這是一個很有迷惑性的例子,大家可以看看下面的代碼:

這里其實是希望屬性b可以被監(jiān)聽到的,所以嘗試重新給this.data賦值,但是很遺憾,const data的引用和this.data是同一個,this.data = data并不能實現(xiàn)變量的覆蓋(因為vue只有變量和之前不同才會對變量里面的所有屬性做劫持,同一個引用,vue不會對新屬性進行監(jiān)聽)

// 例子
// 假設已經有一個data
{
 data(){
 return {
  data:[{a:1}]
 }
 },
 created(){
 /* 在這里其實我們是希望將變量覆蓋的 */
 const data = this.data
 data[0].b = 1
 this.data = data
 }
}

可以看大以下輸出,可以看到a屬性是有get和set的,即他們已經是響應式的了,但是b卻沒有get/set。使用this.data=JSON.parse(JSON.stringify(data))的原理實際上就是為了創(chuàng)建一個新的對象重新賦值。

如果還是不行,要仔細檢查變量有沒有設置成功,可以通過vue的Devtools工具查看,或者直接輸出到控制臺里面查看。有可能是this等的指向不對或者是拼寫錯誤導致變量賦值失敗

還要看看視圖里面的變量和你所希望更新的變量是不是同一個,會不會是視圖里面的變量寫錯了

其他的方法還包括:重啟以下瀏覽器,看看是不是瀏覽器本身異常了等。

接下來,就是我個人的比較獨特的問題了,如果你還沒有解決,或者好奇我遇到的是一個怎樣的問題,你也可以往下讀。

問題描述

在chrome瀏覽器上開發(fā)vue項目,結果突然發(fā)現(xiàn)異步獲取數(shù)據(jù)后視圖沒有更新。

排查

這個問題很奇怪,因為之前在公司的時候,代碼明明是沒有問題的,當時我以為可能是自己不小心改了什么代碼,出bug了。當然我心里一點都不慌,數(shù)據(jù)沒有更新嘛,一般原因有以下幾點:

數(shù)據(jù)沒有設置成功

設置的數(shù)據(jù)不是響應式的

設置的數(shù)據(jù)和視圖上的變量不是同一個,可能設置錯了變量

結果?。?!竟然不是這些原因,我通過vue的Devtools工具查看,發(fā)現(xiàn)數(shù)據(jù)正確設置了,而且是響應式的,可以動態(tài)更新。我不放心,又通過debugger打斷點,并輸出了相應的data到控制臺上,結果確認我所希望使用的變量確實已經被vue進行了劫持(vue2的響應式其實就是通過Object.defineProperty對數(shù)據(jù)進行監(jiān)聽)

我隨便mock了一個數(shù)據(jù)截圖如下:如果一個變量屬性是響應式的,那它應該會多出了下圖中框住的get/set。

由此我確認了我的數(shù)據(jù)是響應式的,我又再三確認了視圖的變量沒有問題。這時,我開始慌了,感覺自己可能掉進了一個不好排查的坑里面出不來了。果然,我嘗試了各種辦法,卻始終無法解決這個問題。期間我也試了各種各樣的手段去搜索,始終一無所獲。

直到我試著在360瀏覽器上打開這個頁面,發(fā)現(xiàn)頁面的數(shù)據(jù)竟然可以動態(tài)刷新?。?!這時我反應過來,難道是瀏覽器的兼容問題,或者是瀏覽器本身異常?

我又試著重啟chrome瀏覽器,發(fā)現(xiàn)還是不行。

難道真的是兼容問題嗎?但是沒有理由的呀,之前在公司明明是正常的,難道還和瀏覽器版本有關系?這時我開始想這個數(shù)據(jù)和普通的數(shù)據(jù)有什么不同,一個明顯的不同是這個數(shù)據(jù)嵌套比較深?不會吧,數(shù)據(jù)嵌套太深會導致數(shù)據(jù)無法同步的嗎?

說實話,我糾結了很久,最后是真的無意間發(fā)現(xiàn)了真相:

真相

導致我數(shù)據(jù)無法同步的真兇竟然是Google 翻譯這個插件。。。

真相是這樣的,我對頁面頭部寫了<html lang="en">結果瀏覽器插件就幫我對頁面進行了翻譯,當然我的頁面本身就是中文,我并沒有看出異常。但是這個時候的頁面已經是翻譯的頁面了,我dom的變化這個翻譯的頁面是不會同步的。所以就導致了我所看到的數(shù)據(jù)沒有刷新的問題。

發(fā)現(xiàn)真相的時候我的內心是崩潰的,搞了這么就原因竟然是這個。

以上這篇淺談vue生命周期共有幾個階段?分別是什么?就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • vscode下vue項目中eslint的使用方法

    vscode下vue項目中eslint的使用方法

    這篇文章主要給大家介紹了關于vscode下vue項目中eslint的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • vue-next/runtime-core 源碼閱讀指南詳解

    vue-next/runtime-core 源碼閱讀指南詳解

    這篇文章主要介紹了vue-next/runtime-core 源碼閱讀指南詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • 詳解input組合事件如何監(jiān)聽輸入中文

    詳解input組合事件如何監(jiān)聽輸入中文

    這篇文章主要為大家介紹了input組合事件如何監(jiān)聽輸入中文示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Vue項目API接口封裝的超詳細解答

    Vue項目API接口封裝的超詳細解答

    在前端vue的開發(fā)中,有一點是必須要做的,那就是將所有的API接口封裝起來,因為從開發(fā)到最終上線的過程中,API是需要經常更換的,下面這篇文章主要給大家介紹了關于Vue項目API接口封裝的相關資料,需要的朋友可以參考下
    2022-09-09
  • vue3?中使用?jsx?開發(fā)的詳細過程

    vue3?中使用?jsx?開發(fā)的詳細過程

    這篇文章主要介紹了vue3?中使用?jsx?開發(fā),本文著重說一下在使用 .vue 文件和 .jsx 文件在使用語法上的差異,需要的朋友可以參考下
    2022-09-09
  • vue中設置echarts寬度自適應的代碼步驟

    vue中設置echarts寬度自適應的代碼步驟

    這篇文章主要介紹了vue中設置echarts寬度自適應的問題及解決方案,常常需要做到echarts圖表的自適應,一般是根據(jù)頁面的寬度做對應的適應,本文記錄一下設置echarts圖表的自適應的步驟,需要的朋友可以參考下
    2022-09-09
  • vue的ElementUI form表單如何給label屬性字符串中添加空白占位符

    vue的ElementUI form表單如何給label屬性字符串中添加空白占位符

    這篇文章主要介紹了vue的ElementUI form表單如何給label屬性字符串中添加空白占位符問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue2.0+webpack環(huán)境的構造過程

    vue2.0+webpack環(huán)境的構造過程

    本文分步驟給大家介紹了vue2.0+webpack環(huán)境的構造過程的相關資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-11-11
  • vue 獲取url參數(shù)、get參數(shù)返回數(shù)組的操作

    vue 獲取url參數(shù)、get參數(shù)返回數(shù)組的操作

    這篇文章主要介紹了vue 獲取url參數(shù)、get參數(shù)返回數(shù)組的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 一文詳解vue2的diff算法流程

    一文詳解vue2的diff算法流程

    本篇文章將會嘗試從算法的角度主要聊一聊vue2的diff策略,幫助讀者朋友在遇到相關的面試題時可以和面試官談笑風生,文中有相關的圖解和代碼示例,感興趣的同學跟著小編一起來看看吧
    2023-08-08

最新評論

望谟县| 田东县| 同心县| 靖西县| 宜昌市| 维西| 武功县| 施秉县| 浦城县| 城步| 繁昌县| 民勤县| 永修县| 海口市| 云林县| 长子县| 寿光市| 巩义市| 陆丰市| 十堰市| 阜阳市| 巨野县| 邓州市| 额济纳旗| 藁城市| 房山区| 广南县| 亚东县| 柯坪县| 太康县| 道真| 且末县| 汤原县| 定州市| 剑川县| 耒阳市| 基隆市| 余姚市| 惠水县| 准格尔旗| 龙海市|