vue3+vite中使用vuex的具體步驟
前言:
在vue3+vite創(chuàng)建的項目中使用vuex,要注意的是vite有部分寫法和之前的webpack是不同的,比如,他不支持 require,想把vue2的項目直接升級到vue3的時候,需要改很多地方,如果非要使用vite也可以,記得改相關(guān)的內(nèi)容。
具體步驟:
1、安裝vuex( vue3建議 4.0+ )
pnpm i vuex -S
2、main.js中配置
import store from '@/store' // hx-app的全局配置 const app = createApp(App) app.use(store)
3、新建相關(guān)的文件夾與文件
這里配置多個不同vuex內(nèi)部的js,使用vuex的modules來放不同的頁面,文件,然后統(tǒng)一使用一個getters.js
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 內(nèi)部根據(jù)不同的頁面來發(fā)送不同的state數(shù)據(jù)
const getters = { sidebar: state => state.app.sidebar, token: state => state.user.token, } export default getters
app.js 可以定義不同的變量,然后統(tǒng)一 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: { } }
4、具體頁面使用
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)
5、vuex中推出了一個插件(vuex-persistedstate)
可以解決刷新數(shù)據(jù)無保存的問題, 可以把數(shù)據(jù)除了vuex以外,在本地和會話(都支持)儲存下
1)安裝
pnpm i vuex-persistedstate -S
2)store/index.js
import createPersistedstate from 'vuex-persistedstate' //第一步導(dǎo)入 import { createStore } from 'vuex' const store = createStore({ modules, getters, //第二步是加這段代碼,默認(rèn)是存到了localStorage中 plugins: [ createPersistedstate({ key: 'vuex-local', //存儲持久狀態(tài)的鍵。(默認(rèn):vuex) paths: ['user'], //部分持續(xù)狀態(tài)的任何路徑的數(shù)組。如果不加,默認(rèn)所有。 // storage: window.sessionStorage //默認(rèn)存儲到localStorage,想要存儲到sessionStorage }) ] })
API
createPersistedState([options])使用給定的選項創(chuàng)建插件的新實例??梢蕴峁┮韵逻x項來配置您的特定需求的插件:
- key :存儲持久狀態(tài)的鍵。(默認(rèn):vuex)
- paths :部分持續(xù)狀態(tài)的任何路徑的數(shù)組。如果沒有路徑給出,完整的狀態(tài)是持久的。(默認(rèn):[])
- reducer :一個函數(shù),將被調(diào)用來基于給定的路徑持久化的狀態(tài)。默認(rèn)包含這些值。
- subscriber :一個被調(diào)用來設(shè)置突變訂閱的函數(shù)。默認(rèn)為store => handler => store.subscribe(handler)
- storage :而不是(或與)getState和setState。默認(rèn)為localStorage。
- getState :將被調(diào)用以重新水化先前持久狀態(tài)的函數(shù)。默認(rèn)使用storage。
- setState :將被調(diào)用來保持給定狀態(tài)的函數(shù)。默認(rèn)使用storage。
- filter :將被調(diào)用來過濾將setState最終觸發(fā)存儲的任何突變的函數(shù)。默認(rèn)為() => true
到此這篇關(guān)于vue3+vite中使用vuex的文章就介紹到這了,更多相關(guān)vue3+vite使用vuex內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
打包組件報錯:Error:Cannot?find?module?'vue/compiler-sfc&ap
最近遇到這樣的問題,vue組件庫搭建過程中使用webpack打包組件時報錯,本文給大家分享打包組件報錯:Error:?Cannot?find?module?‘vue/compiler-sfc‘的解決方法,感興趣的朋友一起看看吧2023-12-12vue實力踩坑?當(dāng)前頁push當(dāng)前頁無效的解決
這篇文章主要介紹了vue實力踩坑?當(dāng)前頁push當(dāng)前頁無效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04解決vue3+vite配置unplugin-vue-component找不到Vant組件
這篇文章主要為大家介紹了vue3+vite配置unplugin-vue-component找不到Vant組件問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09vue?element-ui的table列表中展示多張圖片(可放大)效果實例
這篇文章主要給大家介紹了關(guān)于vue?element-ui的table列表中展示多張圖片(可放大)效果的相關(guān)資料,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下2023-08-08Vue?中如何使用?el-date-picker?限制只能選擇當(dāng)天、當(dāng)天之前或當(dāng)天之后日期的方法詳解
在Vue前端開發(fā)中,使用 el-date-picker 組件進行日期選擇是常見的需求,有時候我們需要限制用戶只能選擇當(dāng)天、當(dāng)天之前或當(dāng)天之后的日期,本文將詳細介紹如何使用 el-date-picker 組件實現(xiàn)這些限制,讓你能夠輕松應(yīng)對各種日期選擇場景,需要的朋友可以參考下2023-09-09