Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当从Vuex模块内调用时,如何全局别名Vuex操作?_Javascript_Vue.js_Vuex - Fatal编程技术网

Javascript 当从Vuex模块内调用时,如何全局别名Vuex操作?

Javascript 当从Vuex模块内调用时,如何全局别名Vuex操作?,javascript,vue.js,vuex,Javascript,Vue.js,Vuex,我主要是在Vue 2中寻找合适的语法来创建可以全局访问但位于模块内的Vuex方法。我通常看到的惯例是使用$字符,例如$axios或$store 在实例化Vue实例时,我可以执行导入Axios然后应用实例这样的操作: 从“Vue”导入Vue; 从“axios”导入axios; 导出默认值(状态)=>{ Vue.prototype.$axios=axios; } 我想做的与此类似,但我想访问我创建的自定义Vuex模块。假设我的模块有处理身份验证的操作,模块名为auth。让我们假设其中一个操作是注销

我主要是在Vue 2中寻找合适的语法来创建可以全局访问但位于模块内的Vuex方法。我通常看到的惯例是使用
$
字符,例如
$axios
$store

在实例化Vue实例时,我可以执行导入Axios然后应用实例这样的操作:

从“Vue”导入Vue;
从“axios”导入axios;
导出默认值(状态)=>{
Vue.prototype.$axios=axios;
}
我想做的与此类似,但我想访问我创建的自定义Vuex模块。假设我的模块有处理身份验证的操作,模块名为
auth
。让我们假设其中一个操作是
注销
操作。我可以在我的Vue组件中调用此操作,如下所示:

this.$store.dispatch(“auth/logout”);
但我不想这样,我只想

this.$auth.logout()
或者类似简洁的东西

似乎不可能简单地做这样的事情

从“Vue”导入Vue;
导出默认值(状态)=>{
Vue.prototype.$auth.logout=state.store.dispatch(“auth/logout”);
}

如何做到这一点?

您可以采取以下措施:

// src/plugins/auth.js
import Vue from "vue";
import store from "../store";

Vue.prototype.$auth = {
  login() {
    store.dispatch("auth/LOGIN");
  },
  logout() {
    store.dispatch("auth/LOGOUT");
  }
};
在main.js中,只需将导入添加到此文件:

// src/main.js
// imports...
import "./plugins/auth.js";
// code...
您可以这样使用它:

// src/components/Test.vue
<script>
export default {
  created() {
    this.$auth.login()
  }
}
</script>
//src/components/Test.vue
导出默认值{
创建(){
这是。$auth.login()
}
}

示例源代码:

您可能已将其设置在其他位置,或者您有第三方软件包设置了此
auth
属性。有关Vue实例属性的更多信息,请选中此项-似乎无法使用
$auth
,可能是因为它是Vuex模块的名称。。。任何其他变量都可以。谢谢