pinia快速上手指南

196 阅读1分钟

Vue3 + Pinia快速上手

一、安装

npm install pinia

二、基本使用

1. main.ts中引入pinia
import { createApp } from 'vue'
import App from './App.vue'
import { createPinia } from 'pinia'

const pinia = createPinia()
const app = createApp(App)

app.use(pinia)
app.mount('#app')
2. 创建/store/index.ts文件并导入pinia (setup模式)
import { defineStore } from 'pinia'
import { ref } from 'vue'

export const mainStore = defineStore(
  'main',
  () => {
    const count = ref<number>(1)
    const increment = () => {
      count.value++
    }
    return {
      count,
      increment
    }
  }
)

3. 在页面中引入使用
<script setup lang="ts">
import { mainStore } from '@/store/index'
// sotre对象
const store = mainStore()
</script>

<template>
  <button @click="store.increment">
    {{ store.count }}
  </button>
</template>


三、数据持久化

每次刷新后store中的数据会被清除,此时可以将store中的数据保存到sessionStorage中,这样每次刷新store会自动读取sessionStorage中的数据以解决数据丢失的问题

1. 安装pinia-plugin-persist插件
npm install pinia-plugin-persist
2. main.ts中注册插件
import { createApp } from 'vue'
import App from './App.vue'
import { createPinia } from 'pinia'
import piniaPluginPersist from 'pinia-plugin-persist'

const pinia = createPinia()
pinia.use(piniaPluginPersist)

const app = createApp(App)
app.use(pinia)
app.mount('#app')

3. /store/index.ts文件中使用插件
import { defineStore } from 'pinia'
import { ref } from 'vue'

export const mainStore = defineStore(
  'main',
  () => {
    const count = ref<number>(1)
    const increment = () => {
      count.value++
    }
    return {
      count,
      increment
    }
  },
  {
    persist: { enabled: true }
  }
)