首页 > 其他分享 >vuex的应用

vuex的应用

时间:2023-03-15 16:44:53浏览次数:44  
标签:SET projectId project state 应用 commit vuex

需求:系统顶部添加项目下拉框,顶部下拉框选项改变时其他模块下拉框同时改变。

1.开始进入系统的时候获取项目列表

页面调用接口
// 获取项目列表
store.dispatch("getProject").then(() => {});
store新建project.js
 1 import { listProjectNoPage } from "@/api/system/project";
 2 
 3 const project = {
 4   state: {
 5     projectList: [],
 6     projectId: "",
 7   },
 8 
 9   mutations: {
10     SET_PROJECT_LIST: (state, projectList) => {
11       state.projectList = projectList;
12     },
13     SET_PROJECT_ID: (state, projectId) => {
14       state.projectId = projectId;
15     },
16   },
17 
18   actions: {
19     // 获取用户项目信息
20     getProject({ commit, state }) {
21       return new Promise((resolve, reject) => {
22         listProjectNoPage()
23           .then((res) => {
24             const dataList = res.data;
25             if (dataList.length > 0) {
26               const projectId = dataList[0].projectId;
27               const projectOptions = dataList.map((item) => {
28                 return {
29                   value: item.projectId,
30                   label: item.projectName,
31                   ...item,
32                 };
33               });
34               commit("SET_PROJECT_ID", projectId);
35               commit("SET_PROJECT_LIST", projectOptions);
36             }
37             resolve(res);
38           })
39           .catch((error) => {
40             reject(error);
41           });
42       });
43     },
44     // 修改选中项目
45     changeProject({ commit }, data) {
46       commit("SET_PROJECT_ID", data);
47     },
48   },
49 };
50 
51 export default project;

2.系统顶部引入项目列表监听变化

html
1 <el-select v-model="sysProjectId" placeholder="请选择项目" filterable>
2      <el-option v-for="(item, index) in sysProjectList" :key="index" :label="item.label" :value="item.value" />
3  </el-select>
js
 1 import { mapGetters } from 'vuex'
 2 computed: {
 3     ...mapGetters([
 4       'sysProjectList',
 5     ]),
 6     sysProjectId: {
 7       get () {
 8         return this.$store.state.project.projectId
 9       },
10       set (val) {
11         this.$store.dispatch('changeProject', val)
12       }
13     }
14   },

3.各子模块引入vuex下的项目列表 项目id

html
1 <el-form-item label="所属项目" prop="projectId">
2         <el-select v-model="queryParams.projectId" placeholder="所属项目" filterable clearable @change="handleQuery">
3           <el-option v-for="(item, index) in sysProjectList" :key="index" :label="item.label" :value="item.value" />
4         </el-select>
5 </el-form-item>
js
 1 import { mapGetters } from 'vuex'
 2 computed: {
 3     ...mapGetters([
 4       'sysProjectId',
 5       'sysProjectList',
 6     ]),
 7   },
 8   watch: {
 9     sysProjectId (newVal, oldVal) {
10       // 系统顶部选中项目变化
11       this.queryParams.projectId = newVal
12       this.getList()
13     }
14   },
15   created () {
16     this.queryParams.projectId = this.sysProjectId
17     this.getList();
18   },

 

标签:SET,projectId,project,state,应用,commit,vuex
From: https://www.cnblogs.com/wjian0916/p/17219081.html

相关文章

  • 【快应用】Eval编译报错
    ​ 【关键字】快应用、编译报错 【问题背景】报错描述在编译快应用项目的时候报如下错误,主要是引用一些第三方的sdk中有涉及到eval的。​ 【问题分析】从IDE......
  • 二叉树的实现及应用
    本文记录二叉树的数据结构定义及基本操作的算法描述,并对算法进行简单应用。采用C语言实现。源程序//BiTree.c#include<stdio.h>#include<stdlib.h>//二叉树......
  • 2023,国产操作系统应用开发的路在何方?
    操作系统是为其它软件提供运行环境的硬件扩展,在整个系统中起着承上启下的作用。 对于国产操作系统, 顾名思义就是完全由我国自主研发的操作系统,比如鸿蒙(HarmonyOS)、深度D......
  • 认识一下,我们是应用社交「幕后大佬」 IM 家族
    今天,就让我们跟随小M一起来认识一下:*艾瑞咨询近期发布的《2023年全球互联网通信云行业研究报告》(本公众号后台回复【报告】获取完整版)显示,2021年全球互联网通信云市场......
  • ROS的软件包安装和应用
    一.ROS应用商店简介:ROS应用商店一般用来存放ROS软件包,有多个应用商店,除了ROS官方应用商店外,之前添加的清华源也是一个应用商店,ROS软件包除了放在应用商店外,还有一些是以源......
  • 【方案】智能分析网关与EasyCVR视频融合平台在搭建文旅大数据平台中的应用案例
    据悉,联合国大会日前通过决议,将每年2月17日定为旅游业复原力全球日,并呼吁所有国家、组织和个人在每年的2月17日举办相关活动,使公众认识到可持续旅游业的重要性。旅游业具有......
  • [k8s]使用nfs挂载pod的应用日志文件
    前言某些特殊场景下应用日志无法通过elk、grafana等工具直接查看,需要将日志文件挂载出来再处理。本文以nfs作为远程存储,统一存放pod日志。系统版本:CentOS7x86-64宿主......
  • 应用内支付服务现网、沙盒环境下常见关键事件的对比与总结
    在集成和调试订阅型商品时,我们会依赖沙盒环境来进行模拟实际场景。订阅型商品的购买流程和一次性商品的购买流程类似,但订阅还有其他细节场景,比如续订成功或失败,续订周期时......
  • C# 应用程序域
    在.NET中,每个应用程序域都是一个独立的执行环境,有自己的安全边界和上下文。当使用AppDomain.ExecuteAssembly方法在一个新的应用程序域中执行一个程序集时,这个程序集将会在......
  • ZooKeeper应用案例
    使用ZooKeeper解决常见的分布式问题,包括leader选举、分布式队列、负载均衡等。1、leader选举基于ZooKeeper实现leader选举的基本思想是,让各个参与竞选的实例同时在ZooKeepee......