Pinia优点

用Pinia方式创建一个store

我们先快速创建一个空项目,再安装Pinia:

npm install pinia

虽然Pinia支持vue2,但如果你使用的vue版本低于Vue2.7,还需独立安装composition api: @vue/composition-api (这里建议直接升到Vue2.7,相较于Vue3来说,跨度不会太大,但对Vue的生态支持的更好)

main.ts中对Pinia进行引入:

import { createApp } from 'vue'
import { createPinia } from 'pinia'

import App from './App.vue'

const app = createApp(App)

app.use(createPinia())

app.mount('#app')

接着,我们在src/store中创建counter.ts,并写下基础模板:

import { defineStore } from "pinia";

export const mainStore = defineStore('main', {
  state: () => {
    return {
      helloWord: 'HelloWorld'
    }
  },
  getters: {

  },
  actions: {

  }
})

https://pinia.vuejs.org/zh/core-concepts/#setup-stores

为实现更多高级用法,你甚至可以使用一个函数(与组件 setup() 类似)来定义一个 Store:

import { ref } from "vue";
import { defineStore } from "pinia";

export const mainStore = defineStore('main', ()=>{
    const helloWord = ref('HelloWorld')

    return {
      helloWord
    }
})

创建好仓库mainStore(仓库名)后,我们将在组件中进行使用

<template>
  <div class="">{{ store.helloWord }}</div>
</template>

<script lang="ts" setup>
import { mainStore } from "../store/counter";
const store = mainStore();
</script>

<style scoped></style>

当页面显示出helloWorld后,则说明store创建成功