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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • git push 报错处理 ! [rejected] master -> master (non-fast-forward)

    git push 报错处理 ! [rejected] master -> master (non-fast-forward)

    2021年5月12日
    117
  • json数组对象转化为json字符串_js如何转数组

    json数组对象转化为json字符串_js如何转数组json字符串变对象数组java处理JSONObjectjsonObject=JSONObject.parseObject(subRiskInfoStr);JSONArrayjsonArray=jsonObject.getJSONArray(“data”);Stringjs=JSONObject.toJSONString(jsonArray);List<SubRiskInfo>subRiskInfos=JSONObject.parseArray(js,SubR

    2022年10月6日
    2
  • Linux——./configure && make && make install命令解析

    Linux——./configure && make && make install命令解析当我们在Linux上安装相关的软件源码包时,一般会涉及到以下三个步骤,分别是 ./configure、make、make install————————————————————————————————————————————————————第一步./configure 该步骤主要用来检测系统的配置、环境以及相关依赖,如果缺少相关依赖,该脚本会中止执行,软件安装失败如:它会检…

    2022年6月13日
    40
  • svn 配置文件_svn环境配置

    svn 配置文件_svn环境配置SVN配置文件说明svnserve是SVN自带的一个轻型服务器,SVN用户端通过使用以svn://或svn+ssh://为前缀的URL来访问svnserve服务器,实现远程访问SVN版本库。svnserve可以通过配置文件来设置用户和口令,以及按路径控制版本库访问权限。本文详细分析了svnserve配置文件格式,并说明如何使用配置文件控制版本库访问权限。一、svnserve配置文件概述svnserve配置文件通常由以下3个文本文件组成:svn服务配置文件,该文件版…

    2025年11月8日
    1
  • 网站在线客服系统源码|在线客服代码下载 (2021最新版)「建议收藏」

    网站在线客服系统源码|在线客服代码下载 (2021最新版)「建议收藏」GOFLY,一套可私有化部署的免费开源客服系统,基于Golang开发,编译后的二进制文件可直接使用无需搭开发环境,下载zip解压即可,仅依赖MySQL数据库,是一个开箱即用的网页在线客服系统,致力于帮助广大开发者/中小站长快速整合私有客服功能网站只需嵌入一段js或跳转直连地址即可快速接入客服,访客端支持电脑、手机页面自适应,这个项目截止到现在已经更新了一年多时间,github提交了720多次修…

    2022年7月19日
    21
  • 用户测试用例模板「建议收藏」

    用户测试用例模板「建议收藏」用户测试用例模板

    2022年7月17日
    15

发表回复

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

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