爲何要單獨增長Vuex?
Vuex解決了什麼問題?
若是不用Vuex,怎麼作?
這樣會帶來什麼問題?
是全部項目都用Vuex麼?
從哪裏開始?
什麼例子?
... mounted() { Vue.axios.get('http://localhost:5000/data').then((response) => { const list = response.data.data.liveWodList this.newList = list }) } ...
若是用Vuex呢?
commit
。這裏這個操做,對應Vuex的核心概念之一:Mutations(變化)
!他的做用就是通知Vuex要搞事情了,好比刪除數據、增長數據等,代碼是這樣的this.$store.commit('setData', list)
,這個有兩個參數,第一個參數是要搞的事情,第二個參數是具體的數據。數據存哪了?
State(狀態)
,就是全部須要變化的東西都存在我這。代碼是這樣的:function setData(state, data) { state.list = data }
怎麼拿到數據?
State
,取也是從這裏取。取數據就對應Vuex的核心概念之三Getters
,代碼是這樣的的:const getters = { list: state => state.list }
目錄結構
store |____modules | |____list.js |____mutation-types.js |____store_index.js
這個目錄結構有什麼好處?
store/mutation-types.js
。這個文件的結構比較簡單,代碼以下:export const LIST = { GET_DATA: 'getData', ADD_DATA: 'addData' }
LIST
,將來可能會多增長NEWS
/USER
等,也是一個模塊,一個常量對象。modules/list.js
,代碼以下:import { LIST } from '../mutation-types' const state = { list: [] } const mutations = { [LIST.GET_DATA](state, data) { state.list = data } } const getters = { list: state => state.list }
state/mutations/getters
,能夠和我上面說的對比一下,如今看代碼,應該很清晰了。注意:裏面有不少ES6的語法,不明白的能夠查一查。store/store-index.js
爲入口文件,裏面主要是引入各配置,供Vue使用。注意:這個文件的引入是在src/index.js
裏面!流程圖
好像還缺一個?
Action
,爲何沒提這個Action,按個人理解,Action
這一層應該是在多個操做中有價值,好比有一個預定按鈕,點擊以後,會更新幾個Component的狀態。現實開發中,基本上都是點擊按鈕,觸發一個事件,那增長Action
就會增長整個流程的鏈路,增長複雜度。碼上點我(Github)vue
Vue-SSR系列目錄
從零開始搭建vue-ssr系列之一:寫在前面的話webpack
從零開始搭建vue-ssr系列之二:純client端渲染以及webpack2+vue2注意事項ios
從零開始搭建vue-ssr系列之四:Vuex詳解github