国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Vuex 模塊化使用詳解

2024-05-06 15:36:23
字體:
來源:轉載
供稿:網友

前言 上回我們說了一下 vuex 的簡單使用,最后面的時候有說了,由于使用單一狀態樹,應用的所有狀態會集中到一個比較大的對象。當應用變得非常復雜時,store 對象就有可能變得相當臃腫。

為了解決以上問題,Vuex 允許我們將 store 分割成模塊(module)。每個模塊擁有自己的 state、mutation、action、getter、甚至是嵌套子模塊——從上至下進行同樣方式的分割,今天我們也來簡單了解一下他的使用,深入學習可能還是要去看官方文檔

1 文件結構

文件結構的話,模塊化的使用要多一個 modules 的文件夾,里面放著細分模塊的 js 文件/模塊名文件夾。

這里官方的標準是一個模塊一個 js 文件,但是要是模塊太復雜的話,也可以把里面的代碼拆分出來。

// store 文件夾 │ actions.js│ getters.js│ index.js│ mutations.js│ state.js│└─modules  │ moduleB.js  │  └─moduleA      index.js      mutation.js      state.js

然后在創建 store 的 js 文件中引入這些模塊,直接

import moduleA from './modules/moduleA/index'import moduleB from './modules/moduleB';export default new Vuex.Store({  state,  getters,  mutations,  actions,  modules: {    moduleA,    moduleB,  }});

2 模塊的局部狀態對象的定義

模塊內部的 getter,mutation 和 action,他們方法接收的參數會和根狀態的不一樣,我們一個一個來

getter

getter 的話,他會有三個參數,第一個是模塊內的 state,第二個是 模塊內的 getters,第三個是根節點狀態 rootState,

const getters = { bFullName: (state, getters, rootState) => `full${state.bName}`}

mutation

mutation 里面的回調函數傳入的第一個參數也是 模塊內的 state,其他和根狀態定義的時候一樣

const mutations = { // 這里的 `state` 對象是模塊的局部狀態 SET_B_NAME(state, payload) {  debugger  state.bName = payload.name; }}

action

最后的 action 的話,他傳入還是只有 context 對象,然后咧,這個對象里面的 state 屬性指模塊內的狀態,rootState 指根狀態,如下

const actions = { ASYNC_SET_NAME({ state, commit, rootState }, payload) {  setTimeout(() => {   state.bName = 'asyncName'  }, 4000) }}

3 使用

3.1 state 獲取

這個的話要在原來狀態名前面加一個模塊名才能放到到模塊內的對象。具體如下

// 原先的基礎上加個模塊名this.$store.state.moduleB.bName;// 輔助函數也一樣,name 前面加個模塊名 Deno...mapState({  name: state => state.moduleB.bName,})

3.2 命名空間

getter,mutation,action 他們默認都是注冊在全局命名空間的,所以我們默認是可以和使用根狀態一樣去使用他們,但是這樣不可避免會出現命名沖突的問題,所以使模塊有更高的封裝性與復用性,我們可以通過添加 `

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 于都县| 图片| 石泉县| 临高县| 八宿县| 贞丰县| 广安市| 平阳县| 定日县| 哈密市| 河西区| 盈江县| 肇州县| 广元市| 乌兰县| 正宁县| 青河县| 长顺县| 祁东县| 获嘉县| 静乐县| 漳州市| 伊通| 万山特区| 佳木斯市| 洛浦县| 东乌珠穆沁旗| 资溪县| 墨江| 开化县| 大田县| 福泉市| 维西| 宜兰市| 鞍山市| 略阳县| 宝应县| 牙克石市| 张家界市| 古蔺县| 靖西县|