Vue請(qǐng)求初始化數(shù)據(jù)放在Created還是Mounted?

1,首先我們看下官網(wǎng)對(duì)created和mounted這個(gè)2個(gè)生命周期怎么定義的:
created:
(在實(shí)例創(chuàng)建完成后被立即調(diào)用。在這一步,實(shí)例已完成以下的配置:數(shù)據(jù)觀測(cè) (data observer),屬性和方法的運(yùn)算,watch/event 事件回調(diào)。然而,掛載階段還沒(méi)開(kāi)始,$el 屬性目前不可見(jiàn)。---官方貼的)


created.png

mounted:
(el 被新創(chuàng)建的 vm.$el 替換,并掛載到實(shí)例上去之后調(diào)用該鉤子。如果 root 實(shí)例掛載了一個(gè)文檔內(nèi)元素,當(dāng) mounted 被調(diào)用時(shí) vm.$el 也在文檔內(nèi)。---官方貼的)


mounted.png

2、然后我想問(wèn)下,Vue的生命周期還有那一些?
是不是有以下生命周期:

beforeCreate
created
beforeMount
mounted
beforeUpdate
updated
activated
deactivated
beforeDestroy
destroyed
errorCaptured

(這個(gè)很多我都沒(méi)有用過(guò)。--(;′⌒`)---);

3、我想問(wèn)問(wèn)大家頁(yè)面請(qǐng)求初始化數(shù)據(jù)跟Vue的生命周期有什么關(guān)系?
我的答案是沒(méi)有很大的關(guān)系(個(gè)人觀點(diǎn))--如果有疑問(wèn)可以找我聊聊
4、很多人跟我說(shuō)初始化放在Mounted里面, 我問(wèn)她(他)們?yōu)槭裁矗克?他)們回答說(shuō)因?yàn)檫@個(gè)時(shí)候DOM初始化渲染好啦。然后我繼續(xù)問(wèn)DOM初始化渲染和請(qǐng)求初始化數(shù)據(jù)有什么關(guān)系?他們會(huì)說(shuō)可以顯示請(qǐng)求出來(lái)的數(shù)據(jù)啦。(大家覺(jué)得有沖突嗎?)
--DOM初始化渲染和請(qǐng)求初始化數(shù)據(jù)并沒(méi)有什么沖突好嗎!
5、讓我們?cè)诳纯辞懊娴腣ue生命周期
a、beforeCreate:
(在實(shí)例初始化之后,數(shù)據(jù)觀測(cè) (data observer) 和 event/watcher 事件配置之前被調(diào)用。---官方貼的)


beforeCreate.png

b、beforeMount:
(在掛載開(kāi)始之前被調(diào)用:相關(guān)的 render 函數(shù)首次被調(diào)用。---官方貼的)


beforeMount.png

看了這個(gè)2個(gè)我們繼續(xù)分析:
我們請(qǐng)求回來(lái)的初始化數(shù)據(jù)或者基礎(chǔ)數(shù)據(jù)是不是需要掛在Vue的Data上面?(是的,需要√)
然后我們繼續(xù)beforeCreate的時(shí)候Data有沒(méi)有生成?(答案是:沒(méi)有?!粒?br> --所以這一步是無(wú)法把數(shù)據(jù)掛到Vue的Data上面的
然后我繼續(xù)看created的時(shí)候Data有沒(méi)有生成?(答案是:生成啦?!蹋?br> --所以這一步我們是可以把數(shù)據(jù)掛到Vue的Data上面的,是不是可以放在這里啦?
--是的,可以放在這里啦。所以最后結(jié)論就是放在created里面。(僅發(fā)表個(gè)人的意愿,如果有不妥的請(qǐng)勿噴)
---補(bǔ)充
有人問(wèn)我因?yàn)檎?qǐng)求數(shù)據(jù)是異步的,為什么不可以放在beforeCreate,等請(qǐng)求完成啦Vue的data不就生成的嗎? 答案是可以的。的確是;但是你不能把你需要的初始化數(shù)據(jù)的請(qǐng)求放在一個(gè)Vue的Methods里面, 因?yàn)檫@個(gè)時(shí)候是無(wú)法獲取到Methods的函數(shù)的。所以你要這樣寫(xiě):

beforeCreate:function(){
     server.list1({
        page:1,
        row:25
    },function(res){
        this.list1 = res;
    },this);
    server.list2({},function(res){
        this.list2 = res;
    },this);
}

所以本人建議放在created里面:

created:function(){
    this.queryList1();
    this.queryList2();
    this.queryList3();
}

個(gè)人喜好把~~~~?。。。?!
如有問(wèn)題,可以加Q討論哦:1366379285,加好友備注“簡(jiǎn)書(shū)”

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容