
 
1. 使用Pinia进行状态管理:
 
import { defineStore } from 'pinia'
export const useCounterStore = defineStore({
  id: 'counter',
  state: () => ({
    count: 0
  }),
  actions: {
    increment() {
      this.count++
    },
    decrement() {
      this.count--
    }
  }
})
 
2. 在组件中使用Pinia:
 
<template>
  <div>
    <p>{{ counter.count }}</p>
    <button @click="counter.increment()">Increment</button>
    <button @click="counter.decrement()">Decrement</button>
  </div>
</template>
<script>
import { useCounterStore } from './store'
export default {
  setup() {
    const counter = useCounterStore()
    return {
      counter
    }
  }
}
</script>
 
3. 使用getters获取状态:
 
import { defineStore } from 'pinia'
export const useCounterStore = defineStore({
  id: 'counter',
  state: () => ({
    count: 0
  }),
  getters: {
    isPositive() {
      return this.count > 0
    }
  },
  actions: {
    increment() {
      this.count++
    },
    decrement() {
      this.count--
    }
  }
})
 
4. 在另一个store中依赖另一个store:
 
import { defineStore } from 'pinia'
import { useCounterStore } from './counter'
export const useUserStore = defineStore({
  id: 'user',
  state: () => ({
    name: 'test',
    age: 20
  }),
  getters: {
    message() {
      return `${useCounterStore().count} ${this.name} ${this.age}`
    }
  }
})
 
5. 在插件中注册store:
 
import { createPinia } from 'pinia'
import { useCounterStore } from './store'
const app = createApp(App)
app.use(createPinia())
app.provide('counterStore', useCounterStore())
app.mount('#app')
 
6. 在组件外部使用store:
 
import { useCounterStore } from './store'
useCounterStore().increment()
 
7. 在store中使用localStorage:
 
import { defineStore } from 'pinia'
export const useUserStore = defineStore({
  id: 'user',
  state: () => ({
    name: localStorage.getItem('name') || '',
    age: localStorage.getItem('age') || ''
  }),
  actions: {
    setName(name) {
      this.name = name
      localStorage.setItem('name', name)
    },
    setAge(age) {
      this.age = age
      localStorage.setItem('age', age)
    }
  }
})
 
8. 使用action的回调函数:
 
import { defineStore } from 'pinia'
export const useUserStore = defineStore({
  id: 'user',
  state: () => ({
    name: '',
    age: ''
  }),
  actions: {
    async fetchData() {
      const data = await fetch('https://api.example.com/user')
      const { name, age } = await data.json()
      this.name = name
      this.age = age
    }
  }
})
 
9. 使用mutation:
 
import { defineStore } from 'pinia'
export const useUserStore = defineStore({
  id: 'user',
  state: () => ({
    name: '',
    age: ''
  }),
  mutations: {
    setName(name) {
      this.name = name
    },
    setAge(age) {
      this.age = age
    }
  },
  actions: {
    fetchData() {
      fetch('https://api.example.com/user')
        .then((data) => data.json())
        .then(({ name, age }) => {
          this.setName(name)
          this.setAge(age)
        })
    }
  }
})
 
10. 使用插件扩展Pinia:
 
import { createPinia } from 'pinia'
import { useCounterStore } from './store'
function myPlugin(pinia) {
  pinia.use((context) => {
    context.$counter = useCounterStore()
  })
}
const app = createApp(App)
app.use(createPinia())
app.use(myPlugin)
app.mount('#app')