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

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

min.ts

import './assets/main.css'

import { createApp } from 'vue'
import { createPinia } from 'pinia'


import App from './App.vue'

const app = createApp(App)
//将pinia安装为插件
app.use(createPinia())

app.mount('#app')

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

import { ref, computed } from 'vue'
// 引入defineStore
import { defineStore } from 'pinia'
// 创建实例并暴露
export const useStore = defineStore('counter', () => {
  const num= ref(0)
  const doubleNew = computed(() => num.value * 2)
  function increment() {
    num.value++
  }

  return { num, doubleNew , increment }
})

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

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

//<div>
//累计完成<span>{{ num }}</span>元
//</div>

// 引入pinia
import {useStore} from "@/stores/counter"
import { storeToRefs } from "pinia";
// 获取pinia的state模块
const store = useStore()
//解决数据响应式
const {num, doubleNew } = storeToRefs(store);
//方法需单独解构
const {increment} = store;

2、自定义安装pinia。

// 引入defineStore
import { defineStore } from 'pinia'
// 创建实例并暴露
export const useStore = defineStore('counter', {
    state:() =>{
        return{
            num:10
        }  
    },
    actions:{
        function increment(state) {
            state.num--
        }
    },
    getters:{
        newNum:(state){
            state.num++
        }
    }
})

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

//<div>
//累计完成<span>{{ num }}</span>元
//</div>

// 引入pinia
import {useStore} from "@/stores/counter"
import { storeToRefs } from "pinia";
// 获取pinia的state模块
const store = useStore()
const {num, newNum} = storeToRefs(store);
const {increment} = store;

Vue 3 是一个非常强大的 JavaScript 框架,而 Pinia 是一个简单而强大的状态管理库。在 Vue 3 ,你可以使用 Pinia 来管理全局状态和局部状态。下面是一个简单的介绍Vue 3Pinia的写法。 首先,在你的项目安装 Pinia 依赖: ``` npm install pinia ``` 接着,创建一个 store.js 文件,并编写你的 Pinia Store。例如: ``` import { createPinia } from 'pinia' const pinia = createPinia() export const useCounterStore = pinia.createStore({ state: () => ({ count: 0 }), actions: { increment() { this.count++ } } }) ``` 在上面的代码,我们首先引入了 Pinia 的 createPinia 方法,并使用它创建了一个新的 pinia 实例。然后我们使用 `createStore` 方法创建了一个名为 `useCounterStore` 的 store,其包含一个 `count` 状态和一个 `increment` action,用于增加 `count` 的值。 在你的组件使用这个 store,你需要先引入它: ``` import { useCounterStore } from './store.js' ``` 然后在组件使用这个 store: ``` <template> <div> <p>Count: {{ count }}</p> <button @click="increment">Increment</button> </div> </template> <script> import { useCounterStore } from './store.js' export default { setup() { const counterStore = useCounterStore() return { count: counterStore.count, increment: counterStore.increment } } } </script> ``` 在上面的代码,我们通过 `useCounterStore()` 方法获取了 `useCounterStore` store 的实例,并将其返回的 `count` 和 `increment` 绑定到组件。 至此,你已经完成了使用 Pinia 管理状态的全部过程。当然,还有很多高级用法需要深入学习。下面是相关问题:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值