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])使用给定的选项创建插件的新实例。可以提供以下选项来配置您的特定需求的插件: