比如我这样写:
方式一: {
data:() => { return {arr: []} }
}
方式二: {
data:() => { return {arr: null} }
}
我在钩子函数created中,请求数据,然后赋给this.arr这个属性,
用方式一没有问题,可是换到方式二,就会报错,然后当数据请求
完成以后页面也会正常渲染,也就是说在数据还没请求完成并赋值
给this.arr之前会报错。
(注意:我在模板里面用到了arr这个属性)
可能是你有组件绑定了arr,并且以报错的方式来处理null,如果只是Vue的话,我没有复现这个问题
2018年8月13日14:26:42,发现问题被补充
那我再补充一点。
根据vue实例的生命周期,Created虽然是在模板渲染之前的,但是异步操作不会阻塞生命周期。
也就是说,虽然请求数据是在Created里面,但是实例模板渲染完成之前,数据还没有拿到。
那么模板里的arr依然还是null,使用的时候就会报错。
Vue里面没有阻塞实例生命周期的方法,如果你用了Vue-router,可以用beforeRouterEnter这个hook拿数据,然后再跳转