在这里插入图片描述

pinia一个拥有组合式 API 的 Vue 状态管理库。
pinia 官方文档https://pinia.vuejs.org/zh/introduction.html


安装

yarn add pinia

整合

所有与状态相关文件都放置于项目 src/store 目录下,方便管理

src创建目录 store目录设计如下

创建实例

创建 index.ts 文件内容如下

import { createPinia } from 'pinia'

const store = createPinia()

export default store
挂载

main.ts 文件中进行挂载

import { createApp } from 'vue'
import App from './App.vue'
import store from '@/store'

const app = createApp(App)
app.use(store)
app.mount('#app')
使用

定义Store

pinia 通过 defineStore 函数进行定义,第一个参数名称名称必须保持唯一第二个参数有两种实现方法:Option 对象及 Setup 函数接下来将分别介绍这两种方式如何实现定义

简单理解state 用于定义状态对象getters 相当于 computed 计算属性actions 相当于方法

import { defineStore } from 'pinia'

export const useCounterStore = defineStore('counter', {
  state: () => ({ count: 0 }),
  getters: {
    double: (state) => state.count * 2,
  },
  actions: {
    increment() {
      this.count++
    },
  },
})
  • Setup Store

setup 函数更像 vue组合函数,在函数中可以定义响应属性方法等,最后返回一个需要暴露出去的属性方法的对象。

import { defineStore } from 'pinia'

export const useCounterStore = defineStore('counter', () => {
  const count = ref(0)
  function increment() {
    count.value++
  }

  return { count, increment }
})

使用Store

状态对象及计算属性需要使用 storeToRefs 方法进行提取,以保持及响应性,而方法可以直接调用

const counterStore = useCounterStore()
const { count } = storeToRefs(counterStore)
counterStore.increment()

原文地址:https://blog.csdn.net/gongm24/article/details/134694891

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_20066.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注