vuex中mapGetters「建议收藏」

vuex中mapGetters「建议收藏」vuex为了更快捷解决组件之间相互传值问题不划分模块结构目录index.js:importVuefrom’vue’importVuexfrom’vuex’importrouterfrom’@/router’import{getToken,setToken,removeToken}from’@/common/utils/auth’import{getInfo,getDeptUserTreeList,initGetToke…

大家好,又见面了,我是你们的朋友全栈君。

vuex为了更快捷解决组件之间相互传值问题

   不划分模块

结构目录

vuex中mapGetters「建议收藏」

 index.js:

import Vue from 'vue'
import Vuex from 'vuex'
import router from '@/router'

import { getToken, setToken, removeToken } from '@/common/utils/auth'
import { getInfo, getDeptUserTreeList, initGetToken } from '@/api/user'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    account: '',
    token: getToken(),
    taskTab: '',
    deviceTab: '',
    name: '',
    userId: '',
    roleName: '',
    dept: '',
    deptCode: '',
    permissions: [],
    roles: [],
    deptUsers: []
  },
  mutations: {
    SET_ACCCOUNT: (state, account) => {
      state.account = account
    },
    SET_TOKEN: (state, token) => {
      state.token = token
    },
    SET_DEVICE_TAB: (state, tabName) => {
      state.deviceTab = tabName;
    },
    SET_USERID: (state, userId) => {
      state.userId = userId
    },
    SET_NAME: (state, name) => {
      state.name = name
    },
    SET_ROLES: (state, roles) => {
      state.roles = roles
    },
    SET_roleName: (state, roleName) => {
      state.roleName = roleName
    },
    SET_DEPT: (state, deptName) => {
      state.dept = deptName
    },
    SET_DEPT_CODE: (state, deptCode) => {
      state.deptCode = deptCode
    },
    SET_PERMISSIONS: (state, permissionList) => {
      state.permissions = permissionList
    },
    SET_DEPT_USERS: (state, deptUsers) => {
      state.deptUsers = deptUsers
    },
    // 消息中心
    SET_TASK_TAB: (state, tasktabName) => {
      state.taskTab = tasktabName;
    },
  },
  actions: {
    // 获取token并设置
    initGetToken({ commit }, account) {
      // setToken('')
      return new Promise((resolve, reject) => {
        initGetToken(account).then(res => {
          if (res && res.code !== 200) {
            reject('getToken failed, please get again')
          }
          commit('SET_TOKEN', res.data.token)
          setToken(res.data.token)
          // 获取token成功就可以进入菜单页进行操作
          router.push({ name: 'menu' })
          resolve(true)
        }).catch(error => {
          reject(error)
        })
      })
    },
    setToken({ commit }, data) {
      return new Promise(resolve => {
        commit('SET_TOKEN', data)
        resolve()
      })
    },
    getInfo({ commit, state }) {
      return new Promise((resolve, reject) => {
        getInfo(state.token).then(response => {
          const { data } = response
          if (!data) {
            reject('Verification failed, please Login again.')
          }
          const { roleName, roleCode, userName, deptName, deptCode, permissionList, id } = data
          // roles must be a non-empty array
          if (!roleCode || roleCode.length <= 0) {
            reject('getInfo: roles must be a non-null array!')
          }
          commit('SET_USERID', id)
          commit('SET_ROLES', roleCode)
          commit('SET_NAME', userName)
          commit('SET_roleName', roleName)
          commit('SET_DEPT', deptName)
          commit('SET_DEPT_CODE', deptCode)
          commit('SET_PERMISSIONS', permissionList)
          resolve(data)
        }).catch(error => {
          reject(error)
        })
      })
    },
    getDeptUser({ commit, state }) {
      return new Promise((resolve, reject) => {
        getDeptUserTreeList().then(res => {
          if (res.code !== 200) {
            reject('Verification failed, please Login again.')
          }
          commit('SET_DEPT_USERS', res.data)
          resolve(res.data)
        }).catch(error => {
          reject(error)
        })
      })
    },
  },
  getters: {
    token: state => state.token,
    username: state => state.name,
    userId: state => state.userId,
    dept: state => state.dept,
    deptCode: state => state.deptCode,
    permissions: state => state.permissions,
    roles: state => state.roles,
    deptUsers: state => state.deptUsers,
    account: state => state.account,
    roleName: state => state.roleName,
  }
})

export default store

在vue组件中

import { mapGetters } from "vuex";

 computed: {
    ...mapGetters(["roles", "username", "userId", "roles"]),
  },

mounted():{
  console.log(roles)
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134699.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月6日 下午12:36
下一篇 2022年6月6日 下午12:46


相关推荐

  • pycharm如何激活成功教程_tx激活成功教程器怎么用

    pycharm如何激活成功教程_tx激活成功教程器怎么用背景PyCharm的激活成功教程方法有很多种,第一种是“授权服务器激活”,第二种是“激活码激活”,第三种是“激活成功教程补丁激活”。本文针对第三种“激活成功教程补丁激活”给出有效的激活成功教程方法。准备工具PyCharm激活成功教程补丁这个肯定是需要的,下载链接:PyCharm激活成功教程补丁链接:https://pan.baidu.com/s/1FtyZAxmLOYP-avmGLROdgw提取码:rdnl另外,我提供Pytho…

    2022年8月29日
    7
  • Maven中exclusions用法

    Maven中exclusions用法在一个项目中引入另一个 maven 项目依赖 通过依赖传递 会将 jar 包传递进来 如果不需要某个 jar 包就可以使用 exclusions exclusion groupId groupId artifactId artifactId exclusion exclusions dependency dependency

    2026年3月18日
    1
  • 星火智能批阅机P30首发实测:告别“冷交互”,为批改注入教育的温度

    星火智能批阅机P30首发实测:告别“冷交互”,为批改注入教育的温度

    2026年3月14日
    4
  • linux cat /etc/passwd 说明

    linux cat /etc/passwd 说明

    2021年10月27日
    97
  • Java开发手册之日志规约[通俗易懂]

    Java开发手册之日志规约[通俗易懂]Java开发手册之日志规约

    2022年4月22日
    41
  • 大数据治理平台建设方案

    大数据治理平台建设方案一 数据治理意义 作用和价值意义 是构建完善 共享 统一管理数据环境的基本保障和重要组成部分 是把数据作为资产来管理的有效手段作用 确定了一系列岗位角色和相应的责任及管理流程 保证了业务数据在采集 集中 转换 存储 应用整个过程中的完整性 准确性 一致性和时效性价值 企业进行数据治理的最大驱动力来自数据质量 通过提高数据质量实现更多的业务价值 将实现业务目标作为数据管理和服务的核心驱动力 优化数据架构 提升数据仓库 信息化管理系统建设 支持管理能力的

    2026年3月18日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号