当前位置: 首页 > news >正文

vue项目中的js文件使用vuex

使用场景:假设有一个接口,需要在很多页面获取一遍并且将接口的返回值保存起来,这样就能使用vuex,将值保存在vuex中
实现:vuex中新建firmModule.js文件,编写存储值的代码,utils/getFirmData.js用来调接口获取值并将值存储在vuex中,xxx.vue中调取getFirmData.js中的方法,并且在watch中监听vuex的值实现给xxx.vue的form赋值

store/modules/firmModule.js

const state = {firmData: {firmId: undefined,firmName: undefined,},
};const mutations = {SET_FIRM_DATA(state, firmData) {state.firmData = firmData;},
};const actions = {setFirmData({ commit }, firmData) {commit("SET_FIRM_DATA", firmData);},
};export default {namespace: true,state,mutations,actions,
};

store/index.js

import Vue from "vue";
import Vuex from "vuex";
import firmModule from "@/store/modules/firmModule";
Vue.use(Vuex);const store = new Vuex.Store({modules: {firmModule,},
});export default store;

utils/getFirmData.js

/*** @Event 获取企业信息* @description: 最终数据存储到vuex中 store.state.firmModule.firmData* @author: mhf* @time: 2023-11-16 21:41:05**/
import { queryUserId } from "@/api/enterpriseManage/riskControl.js"; // 接口
import { isEmptyArray } from "@/utils/publicFun"; // 判断是否是空数组
import store from "@/store";export async function getFirmData() {try {const user = localStorage.getItem('user');if (!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])} catch (error) {throw new Error('失败:' + error)}
}// isEmptyArray方法如下:/*** @Event 判断是否是空数组* @description:* @author: mhf* @time: 2023-11-16 17:26:31**/
export function isEmptyArray(arr) {if (Object.prototype.toString.call(arr) !== "[object Array]") return;return arr.length === 0;
}

xxx.vue

import { getFirmData } from "@/utils/getFirmData";// 监听vuex中的数据给formData赋值watch: {"$store.state.firmModule.firmData"(obj) {this.$set(this.formData, "firmName", obj.firmName);this.$set(this.formData, "firmId", obj.id);}},created() {getFirmData();},

注意 eslint检测async await配置如下

.eslintrc.js
// ESlint 检查配置
module.exports = {root: true,parserOptions: {parser: 'babel-eslint',sourceType: 'module',"ecmaVersion": 2020, // 需要此项},env: {browser: true,node: true,es6: true},extends: [],// add your custom rules here// it is base on https://github.com/vuejs/eslint-config-vuerules: {}
}

http://www.lryc.cn/news/232706.html

相关文章:

  • 【Vue3】 computed 完整写法 全选反选 、计算商品总价
  • Mindomo Desktop for Mac(免费思维导图软件)下载
  • Spark资源规划-资源上线评估
  • RT-Thread STM32F407 定时器
  • C#asp.net考试系统+sqlserver
  • mac上配置maven
  • 解决vue-cli node-sass安装不成功问题
  • 【Mysql】Mysql内置函数介绍
  • 【Linux】vscode远程连接ubuntu失败
  • 如何设计开发一对一交友App吸引更多活跃用户
  • UE基础篇六:音频
  • vscode+python开发之虚拟环境和解释器切换
  • vite 样式按需加载
  • Flutter打包iOS过程中pod访问github失败
  • 使用VMware安装linux虚拟机
  • Kafka、RocketMQ、RabbitMQ的比较总结Kafka、RocketMQ、RabbitMQ的比较总结
  • r语言plot函数
  • Notepad++ 和正则表达式 只保留自己想要的内容
  • SELinux零知识学习十、SELinux策略语言之客体类别和许可(4)
  • String字符串性能优化的几种方案
  • 微服务基础,分布式核心,常见微服务框架,SpringCloud概述,搭建SpringCloud微服务项目详细步骤,含源代码
  • 【第2章 Node.js基础】2.7 Node.js 的流(一) 可读流
  • Ubuntu/Debian Hat 系 Linux 使用
  • php接口api数据签名及验签
  • 实战:给docusaurus文档网站配置Algolia 实现全站内容搜索功能-2023.11.16(已解决)
  • Ubuntu18.04安装ROS系统+turtle测试
  • UE基础篇五:动画
  • SELinux零知识学习十二、SELinux策略语言之客体类别和许可(6)
  • vscode的git 工具使用
  • 利用回溯绕过正则表达式