无锡网站建设唯唯网络,医院网站,没有网站做APP,网站被主流搜索引擎收录的网页数量是多少一、Pinia介绍
定义#xff1a;pinia是和vuex一样的状态管理工具
语法#xff1a;和 Vue3 一样#xff0c;它实现状态管理有两种语法#xff1a;选项式API 和 组合式API
支持#xff1a;vue2、typeScript、devtools
二、使用步骤
1.安装 pnpm add pinia yarn add pin…一、Pinia介绍
定义pinia是和vuex一样的状态管理工具
语法和 Vue3 一样它实现状态管理有两种语法选项式API 和 组合式API
支持vue2、typeScript、devtools
二、使用步骤
1.安装 pnpm add pinia yarn add pinia npm i pinia 2.在main.ts中导入实例化
// 导入pinia
import { createPinia } from pinia
const pinia createPinia()// 挂载pinia
createApp(App).use(pinia).mount(#app)
3.创建pinia仓库并使用
1组合式API写法
创建
import { defineStore } from pinia
// import * as obj from pinia
// console.log(obj);
import { ref } from vue
/* 1.组合式pinia */
export const userStoreHr defineStore(hr, () {// (1)模拟statelet num ref(100)const arr ref([1, 2, 3, 4, 5])// (2)模拟mutationconst changeNum () {num.value 100}// (3)模拟actionconst activeArr () {setTimeout(() {const n Math.floor(Math.random() * 10) 1arr.value.push(n)}, 1000)}// (4)模拟gettersconst total () {return arr.value.reduce((sum, item) item sum, 0)}return { num, changeNum, activeArr, total }
})export default userStoreHr
使用
script setup langts
import { userStoreHr } from ./store/hr
const store userStoreHr()
// console.log(store);
/scripttemplatedivdivapp.vue/divdivnum:{{ store.num }} total:{{ store.total() }}/divbutton clickstore.changeNum()按钮1/buttonbutton clickstore.activeArr()按钮2/button
/div
/template
2选项式API写法
创建
// 创建pinia仓库
import { defineStore } from pinia;export const useStoreTt defineStore(tt, {state: () {return {count: 10,price: 50}},actions: {addPrice() {this.price 1console.log(this, 组合式API可以用this);}},getters: {/* 以下两种写法都可以 */// total(): number {// return this.count * this.price// } total: (state) {return state.count * state.price}},
})export default useStoreTt
使用:
script setup langts
import { useStoreTt } from ./store/tt
const store useStoreTt()/scripttemplatedivdivapp.vue/divdivcount :{{ store.count }} price : {{ store.price }}/divdivtotal :{{ store.total }}/divbutton clickstore.addPrice()addPrice/button
/div
/template
3storeToRefs的使用
解决解构数据后响应式失效的问题不能解构函数
script setup langts
import { useStoreTt } from ./store/tt
// 导入storeToRefs
import { storeToRefs } from pinia;
const store useStoreTt()
// 解构的时候调用storeToRefs
const { count, price } storeToRefs(store)/scripttemplatedivdivapp.vue/div!-- 模板中直接使用 --divcount :{{ count }} price : {{ price }}/divdivtotal :{{ store.total }}/divbutton clickstore.addPrice()addPrice/button
/div
/template