为何要单独增长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