前面聊了vue生命周期与路由的先后顺序,现在聊聊computed与各生命周期。先聊一下需求背景,我在做一个图表的时候遇到了,我将图表样式封装为一个组件,然后各个地方需要的时候将数据通过props传入到组件自动画图。因为我这个数据会变化,我的方法里面又有比较多的方法了,就像弄到计算属性里面去,这样在data里面也可以少定义一个属性,然后问题就来了。我在子组件里面读取的props竟然是未定义!!这个问题留到后面解释。
上次我们知道了父组件子组件生命周期的关系,同理我在computed当中定义了一个属性
computed:{
test:function(){return '我是test'}
}
然后我在父组件和子组件生命周期当中都打印出来了。当然我们的computed肯定是有一定的逻辑代码才对的,所以我有写下了这样的测试
data:{
a:23,
b:32},
computed:{
test(){return this.a+this.b;
}
}
结果与上面一致,那么说明computed的属性是在created之前就已经执行了。
好这个时候回到我们的问题,我在computed里面定义的为什么在子组件props里面未定义呢。
基于上面的结论我在父级打印我的test发现未定义,那么这个时候子组件的未定义就可以理解了。先贴上我的代码吧
computed:{
test(){this.ajax.get('url').then((res)=>{returnres.data;