首頁 > 軟體

Vue新的狀態管理庫Pinia入門教學

2022-02-23 10:00:27

為什麼最近Pinia會火起來呢,主要在於Vue3推出來的時候,Vuex對於Vue3的組合式Api支援的不是特別好,也就是在這個時候Pinia出現了。

前沿

Vue官方推薦的狀態管理庫是Vuex,那為什麼最近Pinia會火起來呢,主要在於Vue3推出來的時候,Vuex對於Vue3的組合式Api支援的不是特別好,也就是在這個時候Pinia出現了,最重要的是,Pinia不但支援Vue3,同時還支援Vue2,這就厲害了,而且最新Vuex5的特性還是參考的Pinia

使用教學

官網:https://pinia.vuejs.org/

github地址:https://github.com/vuejs/pinia

1、安裝

npm install pinia -S

2、vue中引入

// Vue3中引入使用
import { createPinia } from 'pinia'

app.use(createPinia())


//Vue2中引入使用
import { createPinia, PiniaVuePlugin } from 'pinia'

Vue.use(PiniaVuePlugin)
const pinia = createPinia()

new Vue({
  el: '#app',
  // 其它設定項
  pinia,
})

3、基本使用

// 定義store
// stores/counter.js
import { defineStore } from 'pinia'

export const useCounterStore = defineStore('counter', {
  // 狀態值定義
  state: () => {
    return { count: 0 }
  },
  // 狀態更改方法定義
  actions: {
    increment() {
      this.count++
    },
  },
})

// 在元件中使用
// 匯入狀態
import { useCounterStore } from '@/stores/counter'

export default {
  setup() {
    // 初始化一個store範例
    const counter = useCounterStore()

    // state更新
    counter.count++
    
    // 或者呼叫方法更新
    counter.increment()
  },
}

4、也可以像vuex一樣使用

const useCounterStore = defineStore('counter', {
  // 狀態值
  state: () => ({ count: 0 }),
  // getter值
  getters: {
    double: (state) => state.count * 2,
  },
  // actions方法
  // 注意pinia裡沒有mutation
  actions: {
    increment() {
      this.count++
    }
  }
})

// 定義另外一個store
const useUserStore = defineStore('user', {
  // ...
})

export default {
  // computed裡引入使用state裡的值
  computed: {
    ...mapStores(useCounterStore, useUserStore)
    ...mapState(useCounterStore, ['count', 'double']),
  },
  // methods裡使用action
  methods: {
    ...mapActions(useCounterStore, ['increment']),
  },
}

好了,Pinia的入門教學就講到這,是不是語法更加簡潔

到此這篇關於Vue新的狀態管理庫Pinia入門教學的文章就介紹到這了,更多相關Vue Pinia內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com