简单的三步vuex入门


Posted in Javascript onMay 20, 2018

前言

之前几个项目中,都多多少少碰到一些组件之间需要通信的地方,而因为种种原因,
event bus 的成本反而比vuex还高, 所以技术选型上选用了 vuex, 但是不知道为什么,
团队里的一些新人一听到vuex,就开始退缩了, 因为vuex 很难? 真的很难吗?
今天我们用简单的3步来证明一下,vuex有多简单.

纯属个人经验,难免有不正确的地方,如有发现,欢迎指正!

这是一个针对新手的入门级教程、入门级教程、入门级教程

第零步

新建一个vue项目,安装vuex,这里不做过多介绍,能点进来的,默认你具备这些技能 ^_^

第一步

新建一个.js 文件,名字位置任意,按照惯例,建议在/src/store 目录下(没有的话自己新建一个呗)

文件位置 /src/store/index.js

// 引入vue 和 vuex
import Vue from 'vue'
import Vuex from 'vuex'

// 这里需要use一下,固定写法,记住即可
Vue.use(Vuex)

// 直接导出 一个 Store 的实例
export default new Vuex.Store({
 // 类似 vue 的 data
 state: {
 name: 'oldName'
 },
 // 类似 vue 里的 mothods(同步方法)
 mutations: {
 updateName (state) {
  state.name = 'newName'
 }
 }
})

代码看起来稍微有那么一点点多,不过看起来是不是很熟悉? 跟普通的 vue 没多大差别嘛.

这一步其实就是新建一个store,但是我们还没在项目中使用.

第二步

在入口文件引入上述文件, 并稍微改一下传给 new Vue()的参数,新增的行后面有备注

文件位置 /src/main.js (vue-cli自动生成的入口,如果你能不用脚手架,那么也就不需要我说明了)

import Vue from 'vue'
import App from './App'
import vuexStore from './store' // 新增

new Vue({
 el: '#app',
 store:vuexStore     // 新增
 components: { App },
 template: '<App/>'
})

Tip: import store from './store' 后面的地址,就是上面我们新建那个文件的位置(/src/store/index.js),
因为我这里是index.js,所以可以省略.

第三步

以上2步,其实已经完成了vuex的基本配置,接下来就是使用了

文件位置 /src/main.js (同样是vue-cli生成的app.vue,这里为了方便演示,我去掉多余的代码)

<template>
 <div>
 {{getName}}
 <button @click="changeName" value="更名">更名</button>
 </div>
</template>

<script>
import HelloWorld from './components/HelloWorld'

export default {
 computed:{
 getName(){
  return this.$store.state.name
 }
 },
 methods:{
 changeName () {
  this.$store.commit('updateName')
 }
 }
}
</script>

这里就是一个很普通的vue文件了,有区别的地方是这里我们需要用computed属性去获取 store 里的 "data"

还有就是我们要改变数据的话,不再用 this.xxx = xxx 改成 this.$store.commit('updateName')

总结

你可能会觉得,上例这样做的意义何在,为何不直接用vue的data跟methods?

上例只是为了简单讲解如何使用vuex,所以简化了一些流程,试想一下,如果你有这样一个页面:

一共嵌套了10层组件(即子组件里面还有子子组件,子子组件下面还有子子子组件,以此类推10层)

然后最后一层组件一个数据改变了,要通知第一层组件的时候,我们只需在最底层组件里this.$store.commit(),

然后再最外层组件上用computed属性获取对应的值,就能做到实时更新.无需层层$emit上去.

最后

本来想在最后再扩展一下getter,action+dispatch,模块化等等,不过为了对得起这个标题。

分享给大家本文介绍的源码:https://github.com/noahlam/articles

Javascript 相关文章推荐
一个对于js this关键字的问题
Jan 09 Javascript
jquery 表格分页等操作实现代码(pagedown,pageup)
Apr 11 Javascript
js判断输入是否为数字的具体实例
Aug 03 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
May 05 Javascript
js使用循环清空某个div中的input标签值
Sep 29 Javascript
最佳的JavaScript错误处理实践
Jul 16 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
Sep 02 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
May 11 Javascript
BootStrap 表单控件之单选按钮水平排列
May 23 Javascript
JavaScript前端实现压缩图片功能
Mar 06 Javascript
VueQuillEditor富文本上传图片(非base64)
Jun 03 Javascript
angular共享依赖的解决方案分享
Oct 15 Javascript
vue项目如何刷新当前页面的方法
May 18 #Javascript
原生JS实现的碰撞检测功能示例
May 18 #Javascript
JS实现json对象数组按对象属性排序操作示例
May 18 #Javascript
vue.js使用3DES加密的方法示例
May 18 #Javascript
JS实现的3des+base64加密解密算法完整示例
May 18 #Javascript
JS实现调用本地摄像头功能示例
May 18 #Javascript
React全家桶环境搭建过程详解
May 18 #Javascript
You might like
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
php中实现获取随机数组列表的自定义函数
2015/04/02 PHP
php中get_defined_constants函数用法实例分析
2015/05/12 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
2017/02/07 PHP
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
基于jquery的图片轮播 tab切换组件
2012/07/19 Javascript
nodejs读取memcache示例分享
2014/01/02 NodeJs
JS中取二维数组中最大值的方法汇总
2016/04/17 Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
2016/08/31 Javascript
微信小程序 教程之引用
2016/10/18 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
2017/01/05 Javascript
vue实现单选和多选功能
2017/08/11 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
Element-UI中关于table表格的那些骚操作(小结)
2019/08/15 Javascript
用Golang运行JavaScript的实现示例
2019/11/25 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第二场 2月28日
2021/03/11 DOTA
python实现udp数据报传输的方法
2014/09/26 Python
python 并发编程 阻塞IO模型原理解析
2019/08/20 Python
Python流程控制 if else实现解析
2019/09/02 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
在keras 中获取张量 tensor 的维度大小实例
2020/06/10 Python
中国高端家电购物商城:顺电
2018/03/04 全球购物
英国马匹装备和马术用品购物网站:Equine Superstore
2019/03/03 全球购物
2019年分享net面试的经历和题目
2016/08/07 面试题
职称自我鉴定
2013/10/15 职场文书
给实习单位的感谢信
2014/02/01 职场文书
《这儿真好》教学反思
2014/02/22 职场文书
基层党建工作宣传标语
2014/06/24 职场文书
红色旅游心得体会
2014/09/03 职场文书
2014年政府采购工作总结
2014/12/09 职场文书
结婚老公保证书
2015/02/26 职场文书
农民工工资保障承诺书
2015/05/04 职场文书
2016形势与政策学习心得体会
2016/01/12 职场文书
一文搞懂python异常处理、模块与包
2021/06/26 Python
redis数据结构之压缩列表
2022/03/21 Redis