1. 程式人生 > >vuex進階(模組化)

vuex進階(模組化)

        下面這篇是承接上一篇的內容的,如果沒看過上一篇的內容,建議先翻一下上一篇的內容vuex入門。咋們這篇的功能和上一篇的一樣,App.vue的內容沒改,改的只是將store.js整個檔案拆分成各個模組,下面是我拆分成各個js檔案一覽:


        在這裡,actions、getters和mutaions檔案我就不解釋了,下面解釋的是index.js和types.js檔案還有state狀態去哪了。首先state它是去了mutaions那裡方便管理。我們的這個index.js檔案是個入口檔案,也就相當於我們之前寫的store.js檔案,只不過裡面的actions、getters、mutaions和state都在別的模組裡需要匯入進來。而這個types.js檔案是配置一些方法名,方便actions.js和mutaions.js檔案的使用。

        首先我們在index.js裡是這樣子寫的

// 配置入口
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

import actions from './actions'
import mutations from './mutations'
export default new Vuex.Store({
  actions,
modules: {
    mutations
  }
})
        為什麼這裡沒有getters?為什麼這裡Vuex.Store裡面需要用到modules?接下來我慢慢講。然後App.vue裡面有兩個方法,我們就在types.js裡面這樣寫:
export const 
INCREMENT = 'increment' export const DECREMENT = 'decrement'
        在actions.js中,我們可以通過這樣寫來將commit提交出去:
import * as types from './types'
// 或者可以這樣寫:
// import {INCREMENT, DECREMENT} from './types'
// 這個表示只是引出INCREMENT出來,上面那個帶星號的是把所有都引過來。
export default {
  increment: ({commit}) => {
    commit(types.INCREMENT)
  },
decrement: ({commit, state}) => { commit(types.DECREMENT) // 這裡想獲取state裡面的屬性要用下面這個寫法,因為statemutaions模組裡 console.log(state.mutations.count) } }
        mutaions.js檔案裡,需要將通過如下方式來獲取commit並進行操作。因為最後面匯出的模組有三個,所以在index.js裡需要用modules來裹著mutaions:
// 可以用這個方法來代替下面的匯入所有
// import {INCREMENT, DECREMENT} from './types'
import * as types from './types'
import getters from './getters'
const state = {
  count: 10
}

const mutations = {
  [types.INCREMENT]: (state) => {
    state.count++
  },
[types.DECREMENT]: (state) => {
    state.count--
  }
}

export default {
  mutations,
getters,
state
}
        而我們的getters.js檔案就是這樣寫:
export default {
  count: (state) => {
    return state.count
}
}

        最後,若想把state提取出去,應該這樣子寫法,index.js程式碼:

// 配置入口
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

import actions from './actions'
import * as getters from './getters'
import state from './state'
import mutations from './mutations'
export default new Vuex.Store({
  actions,
getters,
state,
mutations
})
        actions.js程式碼:
import * as types from './types'
// 或者可以這樣寫:
// import {INCREMENT, DECREMENT} from './types'
// 這個表示只是引出INCREMENT出來,上面那個帶星號的是把所有都引過來。
export default {
  increment: ({commit}) => {
    commit(types.INCREMENT)
  },
decrement: ({commit}) => {
    commit(types.DECREMENT)
  }
}
        mutations.js程式碼:
// 可以用這個方法來代替下面的匯入所有
// import {INCREMENT, DECREMENT} from './types'
import * as types from './types'
export default {
  [types.INCREMENT] (state) {
    state.count++
  },
[types.DECREMENT] (state) {
    state.count--
  }
}

        state.js程式碼:
const state = {
  count: 10
}

export default state
        getters程式碼:
export const count = state => state.count
        types.js程式碼:
export const INCREMENT = 'increment'
export const DECREMENT = 'decrement'

相關推薦

vuex模組

        下面這篇是承接上一篇的內容的,如果沒看過上一篇的內容,建議先翻一下上一篇的內容vuex入門。咋們這篇的功能和上一篇的一樣,App.vue的內容沒改,改的只是將store.js整個檔案拆分成各個模組,下面是我拆分成各個js檔案一覽:         在這裡,

Python基礎知識五---2----程序基本結構、簡單分支、異常處理、三大實例分析、基本循環結構、通用循環構造方法、死循環嵌套循環、布爾表達式

方法 算法 嵌套 構造方法 決策樹 輸入 繼續 實例 控制 上一篇隨筆寫的內容有點多了,決定分成兩節,不然自己看的時候也頭疼。 三者最大實例: 分支結構可以改變程序的控制流,算法不再是單調的一步步順序執行。     假設:以找出三個數字中最大者的程序設計為例。      

python之函數的2-1

加載 gif pre span 進行 文件 chang ret 16px 動態參數: 一,*args:args是元祖,它包含了所有的位置參數。 1,第一種形參中只含*args。 def func(*args): print(*args,type(args)) f

Python之面向對象的 3-13

姓名 一次 ttr ini 構造 IT args pri attr 構造方法:在面向對象中,創建一個對象的過程(new一個對象) #new一個對象 # object.__new__() # class A: # def __init__(self): #

CSS十一position:fixed

容器 hid ali overflow lin 元素 -a idt fixed 固定定位元素的包含快是根元素 類似於無依賴的絕對定位,利用無依賴的固定定位也可以在元素內部實現一個fixed定位 <div class="father"> <div cla

CSS十四font-family

中文 class 技術分享 png clas info pre 寬度 空格 font-family font-family: serif; /* 襯線字體 */ font-family: sans-serif; /* 無襯線字體 */ font-family支持字體族

CSS十九文本控制

bre spa div 切換效果 nowrap align 分隔 下劃線 效果 text-indent 應用 (1)使用 text-indent 負值隱藏文本內容,例如網站標頭 (2)使用text-indent的百分比值來實現寬度已知的內聯子元素居中 letter-spac

java程式設計師菜鳥十七linux基礎入門linux檔案/目錄的許可權和歸屬管理

在linux中的每一個檔案或目錄都包含有訪問許可權,這些訪問許可權決定了誰能訪問和如何訪問這些檔案和目錄。相應的每一個檔案和目錄都有所屬的屬主和屬組,合理的設定檔案和目錄的屬組和屬主在檔案/目錄管理中佔據著很重要的地位,所以,今天我就和大家一起來看一下有關檔案/目錄的許可權和歸屬的相關設定

java程式設計師菜鳥十六linux基礎入門linux下VIM文字編輯器使用

  linux下編寫配置檔案最好的編輯工具莫過於vim了。Vim的功能實在太多太全,Vim的很多功能也許我們很少用得到,真正為大家常用的功能可能只佔到所有功能的冰山一角。Vim終歸只是一個編寫程式碼或編輯文件的工具,所以只要掌握一些足夠我們使用的功能即可。 做個廣告

java程式設計師菜鳥十五linux基礎入門linux使用者和組管理

我們大家都知道,要登入linux作業系統,我們必須要有一個使用者名稱和密碼。每一個使用者都由一個惟一的身份來標識,這個標識叫做使用者ID.系統中的每一個使用者也至少需要屬於一個"使用者分組".同樣,使用者分組也是由一個惟一的身份來標識的,該標識叫做使用者分組ID(GID).每位使用者的許可

java程式設計師菜鳥十四linux基礎入門linux檔案及目錄命令管理

大家都知道,熟悉命令操作的開發人員,Linux作業系統命令操作效率要高於圖形介面的操作,所以瞭解和學習linux基本命令操作是學習linux作業系統的首要任務,本文主要介紹以下四個知識點:   1.      She

CSS二十:first-letter :first-line

:first-letter 生效的前提 (1)display必須是block、inline-block、list-item、tablecell 或者 table-caption (2)字元前面不能有圖片或者 inline-block/inline-table 之類的元素 存在 (3)能夠被選中的元素,

CSS十九文字控制

text-indent 應用 (1)使用 text-indent 負值隱藏文字內容,例如網站標頭 (2)使用text-indent的百分比值來實現寬度已知的內聯子元素居中 letter-spacing 應用 (1)清除 inline-block 列表由於換行符或者空格產生的空白間隙,使我們的佈局控

CSS十八@font-face

@font-face { font-family: 'example'; src: url(example.ttf); font-style: normal; font-weight: normal; unicode-range: U+0025-00FF; font-variant: sma

CSS十六font

[ [ font-style || font-variant || font-weight ]? font-size [ / line-height ]? font-family ] font-size 和 font-family 這兩個屬性需要同時存在 注意 font中如果未聲命line-height

CSS十五font-weight;font-style;font-variant

/* 平常用的最多的 */ font-weight: normal; font-weight: bold; /* 相對於父級元素 */ font-weight: lighter; font-weight: bolder; /* 字重的精細控制 */ font-weight: 100; font-weig

CSS十二層疊上下文和層疊水平

z-index影響的是定位元素及flex盒子的孩子元素 層疊優先順序 層疊準則 (1)z-index大的在上 (2)同一層級下,後者覆蓋前者 層疊上下文 (1)頁面根元素是根層疊上下文 (2)對於position為absolute/relative以及firefox下position為fix

HDU 1069 Monkey and Banana 最長上升子序列動態規劃

HDU 1069(動態規劃) Monkey and Banana Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Description A group

C++語法篇—第10章 智慧指標

10.智慧指標 10.1 unique_ptr 先看下面的程式碼: #include <iostream>   using namespace std; void Smart_pointer(int a)

C++語法篇—第9章 STL

9.3關聯容器 關聯容器中的元素是按關鍵字來儲存和訪問的;而順序容器中的元素是按照它們在容器中的位置來順序儲存和訪問的。—<< C++ Primer>> 關聯容器常用的有map、set、multimap、multiset。 9.3.1 map 關聯容器map是