使用vuex的时候,出现this.$store为undefined问题

 更新时间:2023年06月27日 14:34:04   作者:yanguo110  
这篇文章主要介绍了使用vuex的时候,出现this.$store为undefined问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

使用vuex出现this.$store为undefined问题

使用的场景

在open_show中调用update_info的时候出现undefined

解决的思路

刚开始接触vuex,碰到这个问题,首先就是搜索一下,别人的一般都是this.$store.state为undefined,还是没有什么思路,然后我看了一下项目中别人写的代码中就可以调用,再看下目录,难道和目录有关,试了一下,并没有什么作用,就换种思路,打印了一下this,发现this的指向出现问题。

this指向的解决方法

第一种:

methods: {
      update_info:function(self,data){
        alert(self.$store);
        self.$store.commit("info",data);
      },
      open_show: function () {
	     var self =this;
       this.update_info(self,this.flag);
       }
   }

第二种:

var self =this;
  export default {
	  methods: {
	      update_info:function(data){
	        alert(self.$store);
	        self.$store.commit("info",data);
	      },
	      open_show: function () {
	       this.update_info(this.flag);
	       }
       },
     created(){
		  self = this;
  }
}

当然以上的方法是解决特定场景下的this指向问题,即方法调用方法时,如果方法很多地方都调用的话,推荐使用第二种,第一种当方法公用时还需要修改,如果只是是单个调用,方法一推荐使用。

vuex使用token时$store一直undefined

报错:Cannot read properties of undefined(reading '$store') at eval

先直接说解决方法,后面再一一分析。

解决方法

将then()中的普通函数换成箭头函数,即可解决错误,该错误产生的原因其实是this的指向问题。

错误代码展示:

分析原因

首先在main.js中对$store进行打印,观察是否真的将store注册到Vue实例中

打印结果:

控制台能对$store进行打印,说明store是存在于vue中的,所以排除vuex安装错误和store没有注册到实例例中的错误。

再观察方法中如何调用store——直接使用this.$store,那么会不会是因为这里的this并不指向vue呢,经过上网查证,我在vue文档中得到了这么一句话:

All lifecycle hooks are called with their 'this' context pointing to the Vue instance invoking it.

就是说,在Vue所有的生命周期钩子方法(如created,mounted, updated以及destroyed)里使用this,this指向调用它的Vue实例,即(new Vue)。

因为在then()中使用了普通函数,而普通函数中的this不指向vue,自然无法找到vue.$store,

将普通函数换成箭头函数之后,箭头函数没有自己的this, 它的this是继承而来,所以箭头函数内的this指向new Vue,也就是我定义的myVue,就可以使用this.$store了。

解决方法示例

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue3环境安装以及项目搭建全过程

    Vue3环境安装以及项目搭建全过程

    Vue工程化项目环境配置还是比较麻烦的,下面这篇文章主要给大家介绍了关于Vue3环境安装以及项目搭建的相关资料,文中通过图文以及代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • vue如何在多个不同服务器下访问不同地址

    vue如何在多个不同服务器下访问不同地址

    这篇文章主要介绍了vue如何在多个不同服务器下访问不同地址,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • 解决el-tree节点过滤不显示下级的问题

    解决el-tree节点过滤不显示下级的问题

    这篇文章主要介绍了解决el-tree节点过滤不显示下级的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • vite2.0+vue3移动端项目实战详解

    vite2.0+vue3移动端项目实战详解

    这篇文章主要介绍了vite2.0+vue3移动端项目实战详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • vue vuex vue-rouert后台项目——权限路由(适合初学)

    vue vuex vue-rouert后台项目——权限路由(适合初学)

    这篇文章主要介绍了vue vuex vue-rouert后台项目——权限路由,通过本文可以很清除的捋清楚vue+vuex+vue-router的关系,本版本非常简单,适合初学者,需要的朋友可以参考下
    2017-12-12
  • vue单个元素绑定多个事件问题(例如点击绑定多个事件方法)

    vue单个元素绑定多个事件问题(例如点击绑定多个事件方法)

    这篇文章主要介绍了vue单个元素绑定多个事件问题(例如点击绑定多个事件方法),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • vue实现简易计算器功能

    vue实现简易计算器功能

    这篇文章主要为大家详细介绍了vue实现简易计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01
  • vue 详情跳转至列表页实现列表页缓存

    vue 详情跳转至列表页实现列表页缓存

    这篇文章主要介绍了vue 详情跳转至列表页实现列表页缓存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • vue-quill-editor二次封装,实现自定义文件上传方式

    vue-quill-editor二次封装,实现自定义文件上传方式

    这篇文章主要介绍了vue-quill-editor二次封装,实现自定义文件上传方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • uni-app获取当前环境信息的方法

    uni-app获取当前环境信息的方法

    uni-aap提供了异步(uni.getSystemInfo)和同步(uni.getSystemInfoSync)的2个API获取系统信息,这篇文章主要介绍了uni-app获取当前环境信息的相关知识,需要的朋友可以参考下
    2022-11-11

最新评论