pinia基本使用

时间:2022-09-26 12:12:56

目录

读state

state 

 写state

 方式一:【修改单个数据时推荐】

 方式二:$patch({})   【不推荐】

方式三:$patch((state)=>{})   【修改多个数据时推荐】

方式四:$state

 方式五:action  【修改多个数据时推荐】 

action

同步

异步

getters

内置api函数

$reset()

$subscribe

$onAction


下载:

npm i -S pinia

main.js中引入pinia: 

pinia基本使用

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'

import { createPinia } from "pinia"
createApp(App).use(createPinia()).mount('#app')

读state

pinia基本使用

pinia基本使用

import { defineStore } from "pinia";

export const useTestStore = defineStore('Test', {
    state: () => {
        return {
            user: '张三',
            age: 33
        }
    },
    getters: {
    },
    actions: {
    }
})

state 

 写state

 方式一:【修改单个数据时推荐】

pinia基本使用

 方式二:$patch({})   【不推荐】

pinia基本使用

方式三:$patch((state)=>{})   【修改多个数据时推荐】

pinia基本使用

方式四:$state

pinia基本使用

 方式五:action  【修改多个数据时推荐】 

pinia基本使用

state解构-storeToRefs

需要使用storeToRefs()才能是响应式

pinia基本使用

<template>
  <div>
    <p>user: {{ user }}</p>
    <p>age: {{ age }}</p>
    <p>Test.user {{ Test.user }}</p>
    <p>Test.age {{ Test.age }}</p>
  </div>
  <button @click="change">修改</button>
</template>

<script setup>
import { storeToRefs } from "pinia";
import { useTestStore } from "./store";
const Test = useTestStore();

let { user, age } = storeToRefs(Test);
function change() {
  user.value = "李四";
  age.value++;
}
</script>

<style scoped>
</style>

 

action

同步

pinia基本使用

异步

pinia基本使用

getters

pinia基本使用

内置api函数

$reset()

state重置为初始化状态

pinia基本使用

$subscribe

state中的值一改变就会触发

pinia基本使用

pinia基本使用

$onAction

$onAction函数接受一个回调函数,该回调函数内部的代码会先于actions函数调用前执行

 after钩子函数会在actions中的函数被调用后执行

pinia基本使用pinia基本使用