0%

Vue_Pinia(簡易使用)

前言

在開發中小型專案時由於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 架構圖

result

pinia 架構圖

result

程式碼

修改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

result

結語

1.pinia去掉mutation,支持直接導入使用,配合vue3 setup,讓資料管理更方便。