场景:项目中的枚举值,通常来说是不会变,那么每次请求接口获取枚举值就有点浪费时间了。
措施:全局请求一次,将所有的枚举值放入缓存。
技术栈:localStorage + vuex + vueRouter
大致实现说明:
vuex中的action中先判断缓存中是否存在枚举值。
若不存在,异步获取所有枚举值接口,并放入缓存,设置vuex中state的枚举值。
若存在,从缓存中获取枚举值,并设置vuex中state的枚举值。
在getters中写全局获取具体某个code的枚举值。
在vueRouter中的beforeEach中调用。
步骤一:vuex modules的enum.js中
import { getDicts } from '@/api/system/dict'
export default {
namespaced: true,
state: {
enumAll: {}
},
mutations: {
// 设置所有枚举值
setEnumAll(state, value) {
state.enumAll = value
}
},
actions: {
// 异步获取所有枚举值
asyncGetEnumAll({ commit }) {
const enumObj = ls.get('enumAll') ||