在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ vue里面的data為什么需要初始化?

vue里面的data為什么需要初始化?

比如我這樣寫:

方式一: {
           data:() => { return {arr: []} }
        }
方式二:  {
           data:() => { return {arr: null} }
        }
我在鉤子函數(shù)created中,請求數(shù)據(jù),然后賦給this.arr這個屬性,
用方式一沒有問題,可是換到方式二,就會報錯,然后當(dāng)數(shù)據(jù)請求
完成以后頁面也會正常渲染,也就是說在數(shù)據(jù)還沒請求完成并賦值
給this.arr之前會報錯。
(注意:我在模板里面用到了arr這個屬性)
回答
編輯回答
愚念

可能是你有組件綁定了arr,并且以報錯的方式來處理null,如果只是Vue的話,我沒有復(fù)現(xiàn)這個問題


2018年8月13日14:26:42,發(fā)現(xiàn)問題被補充

那我再補充一點。

clipboard.png
根據(jù)vue實例的生命周期,Created雖然是在模板渲染之前的,但是異步操作不會阻塞生命周期。

也就是說,雖然請求數(shù)據(jù)是在Created里面,但是實例模板渲染完成之前,數(shù)據(jù)還沒有拿到。
那么模板里的arr依然還是null,使用的時候就會報錯。

Vue里面沒有阻塞實例生命周期的方法,如果你用了Vue-router,可以用beforeRouterEnter這個hook拿數(shù)據(jù),然后再跳轉(zhuǎn)

2017年11月20日 22:45
編輯回答
尋仙

報錯 報的什么錯?

2017年9月29日 02:50
編輯回答
避風(fēng)港

模板里用到了這個數(shù)組,值又被修改為null,肯定會報錯的。
好比你用原生JS寫了如下代碼,原生JS也會報錯呀

let arr = null
arr.forEach(e=>console.log(e))

如果你只是想讓這個數(shù)組為空用來測試,要寫成arr:[],官方文檔也有提到過

clipboard.png
https://cn.vuejs.org/v2/guide...

2018年3月6日 22:22