vuejs学习——vue+vuex+vue-router项目搭建(一)html
vuejs学习——vue+vuex+vue-router项目搭建(二)vue
为何用vuex:组件之间的做用域独立,而组件之间常常又须要传递数据,项目比较小的话传递数据还好,越大的项目,涉及的组件通讯就越多、越频繁,此时管理起来就会很是累,并且容易出错,这就是 Vuex 的意义所在。它能够将数据置于单独的一层,并提供给外部操做内部数据的方法。粗俗一点,就这样理解吧。vuex1.0官网git
$ cnpn install vuex@1.0 --save
如今使用vue1.0的生态的话都要加上版本号,不是默认都是最新版本,而vue1.0只能配合版本1来使用。github
接下来咱们在vuex文件夹新建 store.js(初始化的 state 对象)和actions.js(定义动做)ajax
store.js代码以下:vue-router
//引入相关文件 import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) //定义初始化变量 const state = { list:[{ name:'张三' }], count:0 } //定义动做 const mutations = {//模仿ajax获取新数据后 动态更新data GETLIST (state, amount) { state.list = amount }, //官方例子,加减 INCREASE(state, amount){ state.count=state.count+amount }, REDUCE(state,amount){ state.count=state.count-amount } } export default new Vuex.Store({ state, mutations })
actions.js代码以下:vuex
export const listsCounter = function ({ dispatch, state },list) {//list为调用increment方法所传的值 dispatch('GETLIST', list) } export const increaseCounter = function ({ dispatch, state }) { dispatch('INCREASE', 1) } export const reduceCounter = function ({ dispatch, state }) { dispatch('REDUCE', 1) }
最后咱们在main.js文件引入store数组
import store from './components/vuex/store'
//Vue中加入store
new Vue({
store,
components: { App }
})ide
咱们须要修改根组件来让应用注意到 store 的存在位置。 [vuex] store not injected. make sure to provide the store option in your root component. 若是没有在根组件引入控制台会提示这个警告学习
App.vue文件中引入store
import store from './components/vuex/store' export default { store: store }
引入完后,咱们打开第二章里建的MenuLeft.vue文件。个人思路以下图
ok,咱们开始吧,引入 store文件
template中加入
<li v-for='el in data'><a ><i class="fa fa-home"></i><span class="nav-label">vuex动态改变:{{el.name}}</span></a></li>
<li><a><i class="fa fa-home"></i>{{countValue}}</a></li>
import store from '../vuex/store' export default { components: { User }, data(){ return{ datas:[] } }, methods:{ go(el){ this.$route.router.go({ path: el }) }, }, store:store, vuex: { getters: { data: state => state.list, //获取咱们刚刚在store文件中定义的list数组对象 countValue:state => state.count //获取count变量,用于显示加减改变的值 } }, }
ok,如今能够看看效果了,顺利的话,你应该和下图是同样的
接下咱们就开始写方法,动态改变list吧,进入AsideHeade.vue 文件,引入actions.js
import { listsCounter } from '../vuex/actions' export default { data() { return { ab:[{ name:'王五' }] } }, methods: { change(){ this.setlist(this.ab) } }, vuex: { actions: { setlist: listsCounter } } }
大家能够试试点 看看左侧导航是否是发生改变了,是否是感受vuex仍是挺不错的,哈哈。
咱们还有一个加减的例子,我想留在你们在看官网的同时实现出来,样式下图。
三篇vue项目搭建就完了,相信你们已经能够本身搭建出来了,demo放出来供你们下来研究。