新一代狀態(tài)管理工具,Pinia.js 上手指南
大廠技術(shù)??高級前端??Node進(jìn)階
點(diǎn)擊上方?程序員成長指北,關(guān)注公眾號
回復(fù)1,加入高級Node交流群

前言
Pinia.js 是新一代的狀態(tài)管理器,由 Vue.js團(tuán)隊中成員所開發(fā)的,因此也被認(rèn)為是下一代的 Vuex,即 Vuex5.x,在 Vue3.0 的項目中使用也是備受推崇。
Pinia.js 有如下特點(diǎn):
完整的 typescript 的支持; 足夠輕量,壓縮后的體積只有1.6kb; 去除 mutations,只有 state,getters,actions(這是我最喜歡的一個特點(diǎn)); actions 支持同步和異步; 沒有模塊嵌套,只有 store 的概念,store 之間可以自由使用,更好的代碼分割; 無需手動添加 store,store 一旦創(chuàng)建便會自動添加;
安裝
npm?install?pinia?--save
復(fù)制代碼
創(chuàng)建 Store
新建 src/store 目錄并在其下面創(chuàng)建 index.ts,導(dǎo)出 store
//?src/store/index.ts
import?{?createPinia?}?from?'pinia'
const?store?=?createPinia()
export?default?store
復(fù)制代碼
在 main.ts 中引入并使用。
//?src/main.ts
import?{?createApp?}?from?'vue'
import?App?from?'./App.vue'
import?store?from?'./store'
const?app?=?createApp(App)
app.use(store)
復(fù)制代碼
State
定義State
在 src/store 下面創(chuàng)建一個user.ts
//src/store/user.ts
import?{?defineStore?}?from?'pinia'
export?const?useUserStore?=?defineStore({
??id:?'user',?//?id必填,且需要唯一
??state:?()?=>?{
????return?{
??????name:?'張三'
????}
??}
})
復(fù)制代碼
獲取 state
??<div>{{?userStore.name?}}div>
</template>
復(fù)制代碼
也可以結(jié)合 computed 獲取。
const?name?=?computed(()?=>?userStore.name)
復(fù)制代碼
state 也可以使用解構(gòu),但使用解構(gòu)會使其失去響應(yīng)式,這時候可以用 pinia 的 storeToRefs。
import?{?storeToRefs?}?from?'pinia'
const?{?name?}?=?storeToRefs(userStore)
復(fù)制代碼
修改 state
可以像下面這樣直接修改 state
userStore.name?=?'李四'
復(fù)制代碼
但一般不建議這么做,建議通過 actions 去修改 state,action 里可以直接通過 this 訪問。
export?const?useUserStore?=?defineStore({
??id:?'user',
??state:?()?=>?{
????return?{
??????name:?'張三'
????}
??},
??actions:?{
????updateName(name)?{
??????this.name?=?name
????}
??}
})
復(fù)制代碼
www.狠狠艹
|
在线观看三级视频图片
|
91探花秘 在线播放
|
日韩精品一级视频
|
欧美亚洲成人网站
|
