# pinia ( with Vue cli ) ## 安裝環境 `npm install pinia` ## 配置檔案 ### main.js ``` import { createPinia } from 'pinia' const pinia = createPinia() app.use(pinia) ``` ### stores/[name].js ``` import { defineStore } from 'pinia' // 第一個變數可自由命名 export default defineStore('User Store', { // data state: () => ({ name: 'w11', money: 300 }), // Computerd getters: { getUserName () { return `我的名字叫做 ${this.name}` } }, // Methods actions: { updateName () { this.name = 'w22' } } }) ``` ## 使用 store ``` import userStore from '@/stores/[name]' import { storeToRefs } from 'pinia' export default { setup () { // reactive const user = userStore() // ref const { name, money, getUserName } = storeToRefs(user) // action const { updateName } = user // patch const updateData = function () { user.$patch({ name: 'w33', money: 500 }) } // reset const reset = function () { user.$reset() } return { user, name, money, getUserName, updateName, updateData, reset } } } ```