vue3 Pinia 基本使用

下载

# npm

   npm install pinia@next

# yarn

    yarn add pinia@next

引入

   在main.ts / js里引用 pinia的createPinia  然后用让app.use()加载一下这个函数

import { createApp } from 'vue'
import { createPinia } from "pinia"
import App from './App.vue'

import router from "./router/router"
const app = createApp(App)
app.use(router)
app.use(createPinia())

app.mount('#app')

创建Store 

import { defineStore } from "pinia"


export default defineStore({
    id: "#mian",
    state: () => ({
        name: "piniaName"
    }),
    getters: {
      gettersName: (state) => state.name.length
   },
    actions: {
     insertPost(data: string) {
            this.name = data
     }
   }, 
})

 使用及改变state里定义的变量 

<template>
  <div>{{ piniaStore.name }}</div>
  <div>长度:{{ piniaStore.gettersName}}</div>
  <button @click="setPiniaState">修改</button>
  <button @click="callAction">调用Action</button>
</template>

<script setup lang="ts">
import useMainStore from "@/piniaStore";
const piniaStore = useMainStore();
const setPiniaState = () => {
  piniaStore.$patch({
    name: "123456",  //使用$patch修改
  });
};
const callAction = () => {
  piniaStore.insertPost("123"); //这里直接同步调用action 也可以异步使用
};
</script>

   异步使用action

import { defineStore } from "pinia"


export default defineStore({
    id: "#mian",
    state: () => ({
        name: "piniaName"
    }),
    getters: {
      gettersName: (state) => state.name.length
   },
    actions: {
     async insertPost(data: string) {
           await // 内容
     }
   }, 
})

   

<template>
  <div>{{ piniaStore.name }}</div>
  <div>长度:{{ piniaStore.gettersName}}</div>
  <button @click="setPiniaState">修改</button>
  <button @click="callAction">调用Action</button>
</template>

<script setup lang="ts">
import useMainStore from "@/piniaStore";
const piniaStore = useMainStore();
const setPiniaState = () => {
  piniaStore.$patch({
    name: "123456",  //使用$patch修改
  });
};
const callAction = () => {
  piniaStore.insertPost("123").then(()=>{
       
  }); 
};
</script>

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值