vue 使用 pinia (pinia正确的打开方式)

 首先引入pinia 

npm i pinia

在main.js注册使用

import {
	createPinia
} from 'pinia'

const pinia = createPinia()

app.use(pinia)

基本上环境搭载完毕

使用的话要新建一个store目录,和vuex类似

创建一个js文件,名字随便起,这里创建了一个user.js,暴露出一个useStore的方法,state是存贮数据的地方,

import {
	defineStore
} from 'pinia'
import {
	ref
} from 'vue'
 
export const useStore = defineStore('useStore',{
	// 存储数据的地方
		
	state(){
		return{
			num:0
		}
	},
    
    actions:{
      increment(value){
        this.sum += value
         }
    },
         
    getters:{  //类似于计算属性
     bigSum(state){
      return  state.sum * 10
      }
    }


})

使用的话就是在vue文件中引入

import {useStore}from '你的store user.js的地址'

使用该store

let stateStore = useStore()

 存储的num值,直接用 stateStore.num就能直接访问

修改的话可以用三种方式

第一种  直接修改

function add(){
    stateStore.num++
}

 
第二种 碎片化  $patch  直接更改pinia中的sum值

function change (){
   stateStore.$patch({

    sum:66
})
}

第三种 actions

actions放置的是一个一个的方法,用于响应组件的"动作"

function change (){
   stateStore.increment(1)
}

Vue3 Pinia是一个基于Vue3的状态管理库,它提供了类似于Vuex的全局状态管理能力,同时使用起来更加简单方便。下面是Vue3 Pinia的使用步骤: 1. 安装Vue3 Pinia 你可以使用npm或者yarn安装Vue3 Pinia: ``` npm install pinia ``` 或者 ``` yarn add pinia ``` 2. 创建Pinia Store 你需要创建一个store来管理你的状态。一个store就是一个拥有状态和操作状态的对象。下面是一个例子: ``` import { defineStore } from 'pinia' export const useCounterStore = defineStore({ id: 'counter', state: () => ({ count: 0 }), actions: { increment() { this.count++ } } }) ``` 这个例子,我们创建了一个名为useCounterStore的store,它拥有一个状态count,初始值为0,并且有一个操作increment,用来增加count的值。 3. 在Vue组件使用Store 你可以在Vue组件使用createPinia函数创建一个Pinia实例,并通过inject注入到组件。然后就可以通过store来获取状态和操作状态了。下面是一个例子: ``` <template> <div> <p>{{ count }}</p> <button @click="increment">+1</button> </div> </template> <script> import { defineComponent, inject } from 'vue' import { useCounterStore } from './store' export default defineComponent({ setup() { const store = useCounterStore() const count = computed(() => store.count) const increment = () => { store.increment() } return { count, increment } } }) </script> ``` 这个例子,我们通过useCounterStore函数来获取useCounterStore实例,并且通过computed函数来获取count的值。然后我们在increment函数调用store的increment方法。 4. 相关问题: 1. Vue3 Pinia与Vuex有什么区别? 2. 如何在多个组件之间共享状态? 3. Vue3 Pinia如何处理异步操作? 4. Vue3 Pinia如何处理模块化?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值