Vue3中的pinia的使用

 一、下载依赖

npm i pinia

yarn add pinia

 二、使用方法

2.1 在main.js中引入pinia

import { createApp } from 'vue'
// 1. 引入pinia
import { createPinia } from 'pinia'
import './style.css'
import App from './App.vue'

// 2. 实例化pinia
let pinia = createPinia()


// 3. 挂载pinia
createApp(App).use(pinia).mount('#app')

2.2 在store文件夹中创建一个模块pinia,起名字叫 number

import { defineStore } from "pinia";

const useNumberStore = defineStore('number',{
  // 1.state
  state: () => ({
    num: 100,
    age: 19,
    name: 'wyc'
  }),
  // 2. actions
  actions: {
    // 添加方法
    increment() {
      this.num ++;
    },
    // 异步添加
    asyncIncrement() {
      setTimeout(() => {
        this.num += 20;
      }, 1000);
    }
  },
  // 3. getters
  getters: {
    // 返回 10 倍的 num 
    doubleNum(state) {
      return state.num * 10 
    },
    // 返回 100 倍的 num  调用自身getters中的方法
    doubelPlus() {
      return this.doubleNum * 10
    },
    // 向 getter 中传递参数  val 就是传递的参数  这么做 getter将不在缓存
    getNum(state) {
      return (val) => {
        return state.num + val;
      }
    }
  }
})


export default useNumberStore;

2.3 在vue文件中调用pinia数据,方法

<script setup>
import useNumberStore from "../store/number.js";

// 实例化store
let store = useNumberStore();

// 添加操作
const addNum = () => {
  store.increment();
};
// 异步添加
const asycnAddNum = () => {
  store.asyncIncrement()
};

// 还原数据
const reset = () => {
  store.$reset();
  // store.$state = { num: 10 }
  // store.$patch({ num: 10 })
};

// 监听store中state的变化
store.$subscribe((mutation, state) => {
  console.log(mutation, state);
});
</script>

<template>
  <div>
    我的名字叫---{{ store.name }} <br />
    我的年龄是---{{ store.age }} <br />
    现在的数值---{{ store.num }} <br />
    <button @click="addNum">++</button> <br />
    <button @click="asycnAddNum">async ++</button> <br>
    <button @click="reset">清除数据</button>

    <hr />
    getters中的10倍数---{{ store.doubleNum }} <br />
    getters中的100倍数--- {{ store.doubelPlus }} <br />
    getters中传递参数---{{ store.getNum(10) }} <br />
  </div>
</template>

<style scoped>
</style>

效果展示: 

vue3中pinia的使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值