vuejs学习——vue+vuex+vue-router项目搭建(三)
前言
vuejs学习——vue+vuex+vue-router项目搭建(一)
vuejs学习——vue+vuex+vue-router项目搭建(二)
为什么用vuex:组件之间的作用域独立,而组件之间经常又需要传递数据,项目比较小的话传递数据还好,越大的项目,涉及的组件通信就越多、越频繁,此时管理起来就会非常累,而且容易出错,这就是 Vuex 的意义所在。它可以将数据置于单独的一层,并提供给外部操作内部数据的方法。粗俗一点,就这样理解吧。vuex1.0官网
Vuex下载
$ cnpn install vuex@1.0 --save
现在使用vue1.0的生态的话都要加上版本号,不是默认都是最新版本,而vue1.0只能配合版本1来使用。
Vuex引入
接下来我们在vuex文件夹新建 store.js(初始化的 state 对象)和actions.js(定义动作)
store.js代码如下:
//引入相关文件
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代码如下:
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 }
})
Vuex使用
我们需要修改根组件来让应用注意到 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放出来供大家下来研究。
vuejs学习——vue+vuex+vue-router项目搭建(三)的更多相关文章
- vue前端+java后端 vue + vuex + koa2开发环境搭建及示例开发
vue + vuex + koa2开发环境搭建及示例开发 https://segmentfault.com/a/1190000012918518 vue前端+java后端 https://blog.c ...
- Vue (学习第四部 前端项目搭建流程 )
目录 客户端项目搭建 创建项目目录 初始化项目 安装路由 Vue-router 下载安装路由组件 配置路由 初始化路由对象 注册路由信息 在视图函数中显示路由对应的内容 路由对象提供的操作 页面跳转 ...
- Vue.js系列之项目搭建
项目搭建具体步骤如下: 1.安装node (中)https://nodejs.org/zh-cn/ (英)https://nodejs.org/en/ 2.安装cnpm镜像 (node自带安装了npm ...
- Vue.js系列之项目搭建(1)
项目搭建具体步骤如下: 1.安装node 到官网下载安装,我这里是win7系统. (中)https://nodejs.org/zh-cn/ (英)https://nodejs.org/en/ 2.安装 ...
- vue2.0:(一)、vue的安装和项目搭建(以外卖app项目举例)
vue系列踩坑大作战由此就要开始了,准备好了吗,和我一起踩坑,学会vue吧.同时,也欢迎大家把自己遇到的坑发出来,让更多的人学会vue,因为我深知前端学习新框架不容易,尤其是我这种半路出家的女前端.不 ...
- vue vuex vue-rouert后台项目——权限路由(超详细简单版)
项目地址:vue-simple-template共三个角色:adan barbara carrie 密码全是:123456 adan 拥有 最高权限A 他可以看到 red , yellow 和 blu ...
- vue 3.0 vue-cli项目搭建要点
一.使用vue-cli搭建项目(可使用vue ui图形化界面搭建项目,配置dist时,将名称设为项目名称) 二.项目搭建后 1.配置vue.config.js // 翻阅文档https://cli.v ...
- vue+express+mysql +node项目搭建
项目搭建前需要先安装node环境及mysql数据库. 1.利用vue-cli脚手架创建一个vue项目 a.全局安装 npm install -g vue-cli b.初始化项目 vue init we ...
- vue2.0 项目搭建 和vue 2.0 electron 项目搭建
1.关于electron vue 项目的搭建 全局或者局部安装项目vue: 脚手架指令生成: npm install -g vue-cli vue init simulatedgreg/electro ...
随机推荐
- Codeforces Round #417 (Div. 2)A B C E 模拟 枚举 二分 阶梯博弈
A. Sagheer and Crossroads time limit per test 1 second memory limit per test 256 megabytes input sta ...
- OpenCV---图像直方图
一:直方图的直接使用 from matplotlib import pyplot as plt def plot_demo(image): print(image.ravel()) plt.hist( ...
- php基础知识(语法与原理)
一.php简介 PHP超文本预处理器.是嵌入HTML文件中的服务器脚本程序. PHP代码标记:<?php …. ?> PHP文件的扩展名:.php PHP文件的执行:必须从域名开始访问 P ...
- AES Java加密 C#解密 (128-ECB加密模式)
在项目中遇到这么一个问题: java端需要把一些数据AES加密后传给C#端,找了好多资料,算是解决了,分享一下: import sun.misc.BASE64Decoder; import sun.m ...
- 如何修改 winserver2008 密码策略为简单密码
对于不在域中的计算机, 可以运行: gpedit.msc , 如下图: 对于在域中的计算机, 应该: 如不能生效, 可重启再试.
- 22、WebDriver
什么是WebDriver?1.Webdriver(Selenium2)是一种用于Web应用程序的自动测试工具:2.它提供了一套友好的API:3.Webdriver完全就是一套类库,不依赖任何测试框架, ...
- linux编程之main()函数启动过程【转】
转自:http://blog.csdn.net/gary_ygl/article/details/8506007 1 最简单的程序 1)编辑helloworld程序,$vim helloworld. ...
- (转)USB体系结构
转载地址:http://blog.ednchina.com/zenhuateng/203584/Message.aspx USB总线接口层:物理连接.电气信号环境.信息包传输机制:主机一方由USB主控 ...
- 全面了解 Nginx 主要应用场景
前言 本文只针对Nginx在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,毕竟只是我个人使用过和了解到过得.所以还请见谅,同时欢迎留言交流 N ...
- SPOJ JZPLIT
Problem SPOJ Solution 考虑任意一个作为矩阵四个角的位置 \(r_i \oplus c_j\oplus a_{i,j}\oplus x_{i,j}=0\) \(r_i \oplus ...