使用场景:假设有一个接口,需要在很多页面获取一遍并且将接口的返回值保存起来,这样就能使用vuex,将值保存在vuex中
实现:vuex中新建firmModule.js文件,编写存储值的代码,utils/getFirmData.js用来调接口获取值并将值存储在vuex中,xxx.vue中调取getFirmData.js中的方法,并且在watch中监听vuex的值实现给xxx.vue的form赋值
store/modules/firmModule.js
SET_FIRM_DATA(state, firmData) {
state.firmData = firmData;
setFirmData({ commit }, firmData) {
commit("SET_FIRM_DATA", firmData);
store/index.js
import firmModule from "@/store/modules/firmModule";
const store = new Vuex.Store({
utils/getFirmData.js
import { queryUserId } from "@/api/enterpriseManage/riskControl.js";
import { isEmptyArray } from "@/utils/publicFun";
import store from "@/store";
export async function getFirmData() {
const user = localStorage.getItem('user');
throw new Error('无法获取用户信息');
const userId = JSON.parse(user).user.userId;
const res = await queryUserId({ userId })
if (isEmptyArray(res.data)) {
throw new Error('查询结果为空')
await store.dispatch('setFirmData', res.data[0])
throw new Error('失败:' + error)
export function isEmptyArray(arr) {
if (Object.prototype.toString.call(arr) !== "[object Array]") return;
xxx.vue
import { getFirmData } from "@/utils/getFirmData";
"$store.state.firmModule.firmData"(obj) {
this.$set(this.formData, "firmName", obj.firmName);
this.$set(this.formData, "firmId", obj.id);
注意 eslint检测async await配置如下
.eslintrc.js