您好,登錄后才能下訂單哦!
這篇文章主要介紹了JavaScript Pinia代替Vuex的可行性實例分析的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇JavaScript Pinia代替Vuex的可行性實例分析文章都會有所收獲,下面我們一起來看看吧。
在 Vue 3.0
出來之前,數據存儲的主流依舊是 Vuex
。但是,當 Vue 3.0
問世后,官方為了迎合 Componsition API
,進而設計了全新的狀態管理 Pinia
,而且未來的 Vuex 5
中提及的功能點正是 Pinia
目前已實現的。
! Vuex 5
提及的功能點:
更好的兼容 Componsition AP
更好的支持 TypeScript
優化 modules
的嵌套結構
支持熱加載,無需刷新頁面
Pinia
與 Vuex
對比:
Pinia
沒有 mutations
,且 actions
支持同步/異步,Vuex
同步 mutations
,異步 actions
Pinia
相比 Vuex
擁有更好的 TypeScript
支持
Pinia
不再需要 modules
的嵌套結構,獨立的 store
,扁平化處理得以更好的代碼分割
Pinia
支持熱加載,無需重載頁面,保持現有狀態
Pinia
在 Vue 3
中支持緩存,而 Vuex
則不再支持
Pinia
相比 Vuex
更加輕量化(體積約為 1K)
Pinia
支持 $reset
方法,可以初始化 state
Pinia
不支持 time-travel
功能,相對于 Vuex
調試功能還不成熟
Pinia
同樣也支持 Vue 2.0
npm i pinia@next -S
index.js
:
import { createApp } from 'vue' import element from 'element-plus' import '@/assets/css/index.css' import router from '@/router/index' import App from './App' import { createPinia } from 'pinia' const app = createApp(App) app.use(element).use(router).use(createPinia()).mount('#root')
store/user.js
:
import { defineStore } from 'pinia' export const userStore = defineStore('user', { state: _ => { return { username: '張同學' } }, getters: { }, actions: { // 重置數據 _reset() { this.$reset() } } })
Home.vue
:
<template> <div> 姓名:{{ user_store.username }} <br /> <el-button @click="change_username">修改名稱</el-button> <el-button @click="user_store._reset()">重置</el-button> </div> </template> <script> import { userStore } from '../store/user' export default { setup() { let user_store = userStore() // 初始化 user_store return { user_store } } } </script>
let user_store = userStore() /** * @description 修改用戶名稱 */ let update = _ => { user_store.username = '張三' }
let user_store = userStore() /** * @description 修改用戶名稱 */ let update = _ => { user_store.$patch({ username: '張三' }) }
let user_store = userStore() /** * @description 修改用戶名稱 */ let update = _ => { user_store.$patch(state => { state.username = '張三' }) }
let user_store = userStore() /** * @description 修改用戶名稱 */ let update = _ => { user_store.update_username('張三') } // 修改用戶名稱 update_username(value) { this.username = value }
從下面的截圖我看可以看到自身的一些屬性、方法等,諸如:$reset
,$patch
以及熱更新相關的方法
關于“JavaScript Pinia代替Vuex的可行性實例分析”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“JavaScript Pinia代替Vuex的可行性實例分析”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。