当前位置:   article > 正文

Vue3中的pinia的使用及组合写法与普通写法的区别

Vue3中的pinia的使用及组合写法与普通写法的区别

1、首先pinia可以自己后面按需安装,也可在项目创建时去勾选安装(这里我使用的是项目创建时自动安装的,吃了点亏,忘记这里是组合写法了)

min.ts

  1. import './assets/main.css'
  2. import { createApp } from 'vue'
  3. import { createPinia } from 'pinia'
  4. import App from './App.vue'
  5. const app = createApp(App)
  6. //将pinia安装为插件
  7. app.use(createPinia())
  8. app.mount('#app')

store文件夹中的counter.ts (名字任起)

  1. import { ref, computed } from 'vue'
  2. // 引入defineStore
  3. import { defineStore } from 'pinia'
  4. // 创建实例并暴露
  5. export const useStore = defineStore('counter', () => {
  6. const num= ref(0)
  7. const doubleNew = computed(() => num.value * 2)
  8. function increment() {
  9. num.value++
  10. }
  11. return { num, doubleNew , increment }
  12. })

按照这个写法是不需要添加pinia核心(state、actions、getters),但需要return!!

在组件中直接使用即可,如下图

  1. //<div>
  2. //累计完成<span>{{ num }}</span>元
  3. //</div>
  4. // 引入pinia
  5. import {useStore} from "@/stores/counter"
  6. import { storeToRefs } from "pinia";
  7. // 获取pinia的state模块
  8. const store = useStore()
  9. //解决数据响应式
  10. const {num, doubleCount} = storeToRefs(store);
  11. //方法需单独解构
  12. const {increment} = store;

2、自定义安装pinia。

  1. // 引入defineStore
  2. import { defineStore } from 'pinia'
  3. // 创建实例并暴露
  4. export const useStore = defineStore('counter', {
  5. state:() =>{
  6. return{
  7. num:10
  8. }
  9. },
  10. actions:{
  11. function increment(state) {
  12. state.num--
  13. }
  14. },
  15. getters:{
  16. newNum:(state){
  17. state.num++
  18. }
  19. }
  20. })

3、在组件中使用,如下图

  1. //<div>
  2. //累计完成<span>{{ num }}</span>元
  3. //</div>
  4. // 引入pinia
  5. import {useStore} from "@/stores/counter"
  6. import { storeToRefs } from "pinia";
  7. // 获取pinia的state模块
  8. const store = useStore()
  9. const {num, newNum} = storeToRefs(store);
  10. const {increment} = store;

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号