由Vuex引发的对生命周期的认识

       在我们做Vue的项目的过程中,总少不了利用vuex来配合渲染数据,从而出现各种各样的问题,今天碰见的问题是:我已经拿到了从后台获取的数据,可是当我通过计算属性计算出来后,再次去渲染出来出现了问题,内部字段怎么也获取不到,一直报错,所以就搜罗了一些大佬们的文章,才写了这边文章

问题呈现

①获取到数据同时保存到vuex中
在这里插入图片描述
②计算属性获取vuex中的值
在这里插入图片描述

③循环输出
在这里插入图片描述
④出现错误
在这里插入图片描述

       如果单独输出item.questionSimpleInfo是可以输出整个对象,但是输出其中某一个字段的时候就会找不到。询问了公司的大佬们后,告诉我是初始化的时候数据是空的,输出的时候是从空的里面寻找这个id,所以才找不到。随后在查找了网上的一些资料后配合着大佬讲的方法,做了以下的分析:

1、渲染数据的时候是在vuex中API接口之前渲染的,所以无法找到
2、computed触发的时候还没有触发vuex中的API接口,而是在beforeCreate和created之间触发的

参考文章:https://segmentfault.com/q/1010000010364198
                  https://www.cnblogs.com/happ0/p/8075562.html

       随后我做个了实验,分别在createdmountedcomputedvuex获取接口中做了弹窗,发现和我猜测一样,mounted挂载渲染DOM的时候是先于vuex API 接口触发的,这就造成了,DOM模板已经渲染完毕,但是数据却是空的问题。

解决

在渲染DOM模板的时候可以加个判断,如果这个对象存在的话,那么才能渲染她的子级字段,如果不存在,就不显示这个模板或者使用&&连接符判断

在这里插入图片描述
在这里插入图片描述

这里就有个疑问了,为什么数据为空,单独输出整个对象的时候就可以了呢?如果说真的是初始化的时候为空的话,那单独输出这个对象的时候不应该也是空吗?所以还请来到这里的大佬们,讲解一下这个原因~

Logo

前往低代码交流专区

更多推荐