vuex的升级版 方便简洁个人感觉比vuex好用的多
引入就不多说了,官方文档都有介绍 下面直接上代码
1、首先定义仓库
import {
defineStore
} from 'pinia';
export const editStore = defineStore('edit', {
state: () => {
return {
vIndex: 0,
views: [],
isShowRight: false
};
},
// 也可以这样定义
// state: () => ({ count: 0 })
actions: {
increment() {
this.vIndex++;
},
},
});
2、然后组件引用
import {
storeToRefs
} from "pinia";
import {
editStore
} from '../../stores/edit.js';
const store = editStore();
const {
vIndex,
views,
isShowRight
} = storeToRefs(store); // ✅
//触发事件里直接使用即可
puClick(type) {
const edit = editStore();
console.log(edit)
edit.views.push({
type: type,
title: '新建组件'
})
}
3、页面使用
<script>
import {
storeToRefs
} from "pinia";
import {
editStore
} from '../../stores/edit.js';
const store = editStore();
const {
vIndex,
views,
isShowRight
} = storeToRefs(store); // ✅
export default {
data() {
return {
isShowRight: isShowRight,
width: 0,
height: 0,
top: 0,
left: 0,
vIndex: vIndex,
views: views,
};
}
};
</script>
下面是一部分官方介绍
介绍
uni-app 内置了 Pinia 。
使用
HBuilder X
不需要手动安装,直接使用即可。使用CLI
需要手动安装,执行yarn add pinia
或npm install pinia
。
Vue 2 项目暂不支持
#Pinia 是什么?
Pinia(发音为 /piːnjʌ/
,如英语中的 peenya
) 是 Vue 的存储库,它允许您跨组件、页面共享状态。在服务器端以及小型单页应用程序中,您也可以从使用 Pinia 中获得很多好处:
- 开发工具支持
- 跟踪动作、突变的时间表
- 存储出现在使用它们的组件中
- 时间旅行和更容易的调试
- 热模块更换
- 修改您的存储而不重载您的页面
- 在开发过程中保持任何现有状态
- 为 JS 用户提供适当的 TypeScript 支持或自动完成