pnpm i vuex -S
import store from '@/store'// hx-app的全局配置
const app = createApp(App)app.use(store)

index.js 核心文件,这里使用了import.meta.glob,而不是require
import getters from './getters'
import { createStore } from 'vuex'const modulesFiles = import.meta.glob('./modules/*.js',{ eager: true }); // 异步方式let modules = {}
for (const [key, value] of Object.entries(modulesFiles)) {var moduleName = key.replace(/^\.\/(.*)\.\w+$/, '$1');const name = moduleName.split('/')[1]modules[name] = value.default
}const store = createStore({modules,getters
})export default store
getters.js 内部根据不同的页面来发送不同的state数据
const getters = {sidebar: state => state.app.sidebar,token: state => state.user.token,
}export default getters
app.js 可以定义不同的变量,然后统一 export default
const state = {sidebar: '123'
}const mutations = {TOGGLE_SIDEBAR: state => {state.sidebar = '2222'},const actions = {toggleSideBar({ commit }) {commit('TOGGLE_SIDEBAR')}
}export default {namespaced: true,// 为每个模块添加一个前缀名,保证模块命明不冲突state,mutations,actions
}
user.js 也可以直接返回一个对象,写法都可以
export default {state: {token: '123'},mutations: {SET_TOKEN: (state, token) => {state.token = token},},actions: {}
}
1)引入
import { useStore } from 'vuex'
2)具体使用
setup(){const store = useStore()
}

3)使用 mutations里面的方法
store.commit("app/TOGGLE_SIDEBAR", 1)
4)使用actions里面的方法
store.dispatch("app/asyncAddStoreCount", 2)
1)安装
pnpm i vuex-persistedstate -S
2)store/index.js
import createPersistedstate from 'vuex-persistedstate' //第一步导入
import { createStore } from 'vuex'const store = createStore({modules,getters,//第二步是加这段代码,默认是存到了localStorage中plugins: [createPersistedstate({key: 'vuex-local', //存储持久状态的键。(默认:vuex)paths: ['user'], //部分持续状态的任何路径的数组。如果不加,默认所有。// storage: window.sessionStorage //默认存储到localStorage,想要存储到sessionStorage})]
})
API
createPersistedState([options])使用给定的选项创建插件的新实例。可以提供以下选项来配置您的特定需求的插件:
上一篇:怒发冲冠造句