楼主在做Vue项目的时候,遇到了一个问题,在使用Vuex对数据状态进行管理,根据Vuex官方文档上面说的,操作state对象需要通过Mutations,在我使用Mutations对已经初始化的对象(这个变量是空的对象)添加属性时,控制台会抛出错误,提示该属性没有定义,没有进行初始化;


刚开始看到这个错误的时候,我也是一脸懵逼,我以为是代码逻辑出了问题,因为对于其他属性的操作都是没问题的,于是又花时间去查看自己的代码,但是反复查看也没有发现问题,后来,又回去查看官方文档,在Vue的官方文档里面,发现了问题所在:点击查看 Vue.set


我们在Vuex里面初始化的对象,其实都是被Vue观测的,而我们对Vue观测的属性添加对象的时候,是不能直接添加的,必须使用Vue.set方法,vm.$set(target, key, value),应用在Vuex中就是Vue.$set(this.$store.state.obj, name, value)


在实际的应用中我们是无法直接使用Vue.$set的,如果我们直接使用Vue.$set,而在组件中又没有对Vue(import Vue from 'vue')进行引用的话,控制台就会报错"Vue is undefined",因为全局的Vue在组件中都是以this的形式存在的,因此我们需要用this替换Vue,便可以解决问题。

最后还是要说一声,Vue确实很好用,能够快速搭建自己的项目。

Logo

前往低代码交流专区

更多推荐