前言
在開發中小型專案時由於vuex會造成程式碼太過攏長不夠直覺,因此我們能使用pinia來取代vuex當作data store
安裝環境
1.Vue3
2.Pinia
3.Vue devtool
1 2 3
| 1.vue create my-project 2.cd my-project 3.npm install pinia
|
架構圖
Vuex 架構圖
pinia 架構圖
程式碼
修改main.js
1 2 3 4 5 6 7 8 9 10
| import { createApp } from 'vue' import App from './App.vue' import router from './router' import store from './store' import { createPinia } from 'pinia'
const pinia = createPinia() const app = createApp(App) app.use(pinia) app.use(store).use(router).mount('#app')
|
在store裡建立一個pinia.js
1 2 3 4 5 6 7 8 9 10 11 12
| import { defineStore } from 'pinia' export const useStore=defineStore('main', { state(){ return{ message:"Hello Pinia" } }, getters: { }, actions: { }, });
|
修改componets 元件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| <template> <div class="hello"> <h1> {{plusOne}}</h1> <input v-model="plusOne"> </div> </template>
<script> import { useStore } from '../store/pinia'; import {computed} from 'vue' export default { name: 'HelloWorld', setup() { const common = useStore();
const plusOne = computed({ get: () => common.message, set: (val) => { common.message=val; }, }) return { plusOne } }, props: { msg: String } } </script>
|
result
結語
1.pinia去掉mutation,支持直接導入使用,配合vue3 setup,讓資料管理更方便。