Vue3中,公共js中调用Vuex的变量或者方法

        在Vue3中,想要在一个公共的js文件中调用Vuex的方法。结果出现了如图的保存信息;

 [Vue warn]: inject() can only be used inside setup() or functional components 

        这里是我的原来的代码片段(此代码不可用):

// 下面声明store的方法是不可用的
import { useStore } from "vuex";
const store = useStore();

import { computed } from "vue";
// 获取Vuex中的变量
var stepList = computed(() => {
  return store.state.stepList;
});


function putValue2VuexStepZArr(tabListSelected) {
  // 业务代码
}

export default putValue2VuexStepZArr;

在上面中使用store的方式就是按照在Vue3中的方式引入的。这样是不可以的。经过查询得知,是需要直接引入vuex中的实例才是可以的;

        所以正确的代码如下:

// 下面声明store的方法是不可用的
// import { useStore } from "vuex";
// const store = useStore();

import { computed } from "vue";
import store from "../store/index"; // 这种方式才是导入了实例;
// 获取vuex中的变量
var stepList = computed(() => {
  return store.state.stepList;
});
// 获取vuex中的方法
const SET_STEPZARR = (param) => {
  store.commit("SET_STEPZARR", param);
};


function putValue2VuexStepZArr(tabListSelected) {
  // 业务代码
}

export default putValue2VuexStepZArr;

其实就是把store中的实例真正的导入进入到这个js中,他就可以获取vuex的方法了。

        "../store/index"文件其实就是Vuex的声明实例;应该是以下的格式:

import { createStore } from 'vuex'
import state from "./state";
import getters from "./getters";
import mutations from "./mutations";

const store = createStore({
  state,
  getters,
  mutations,
  actions:{}
})

export default store

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值