??Vuex---命名空間

引言

之前一個項目中,數(shù)據(jù)交互全部放在Vuex的action中,當時產(chǎn)生過一個質(zhì)疑,所有的action都是掛在全局上,如果有重名的action,會產(chǎn)生什么樣的結果?


image.png

為了避免產(chǎn)生重名的action或者mutation,可以使用Vuex的命名空間(awesome ??)


image.png

一、store中設置開啟命名空間

export default {
  namespaced: true, // 開啟命名空間
  state: { yourState: '' // 下文會使用},
  mutations: {},
  actions: {}
}

二、掛載store時設置命名空間名

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

import anyStore from './modules/anyStore'

const store = new Vuex.Store({
  modules: {
    // 掛載:掛載方式共有兩種
    anyStore, // 命名空間名為 anyStore
    namespace: anyStore // 命名空間名為 namespace
  }
})

export default store

三、組件中使用

  1. 第一種使用方式
// 導入輔助函數(shù) mapXXX
// 以mapState 為例

import { mapState } from 'vuex'
export default {
  computed: {
    ...mapState('命名空間名稱', ['yourState'])
  }
}
  1. 第二種使用方式
// 借助vuex 提供的 createNamespacedHelpers 函數(shù)
// 返回綁定在命名空間名稱內(nèi)部的輔助函數(shù), 做了一次過濾

import { createNamespacedHelpers } from 'vuex'
import { mapState } = createNamespacedHelpers('命名空間名稱')

export default {
  computed: {
    ...mapState(['yourState'])
  }
}
bye bye

原文地址

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容