简单的三步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版网站风格切换实例代码
Oct 06 Javascript
javascript 当前日期转化为中文的实现代码
May 13 Javascript
js 表单提交后按钮变灰的实例代码
Aug 16 Javascript
jQuery中:eq()选择器用法实例
Dec 29 Javascript
jQuery判断指定id的对象是否存在的方法
May 22 Javascript
值得分享的bootstrap table实例
Sep 22 Javascript
原生JS实现图片翻书效果
Feb 16 Javascript
利用JavaScript将Excel转换为JSON示例代码
Jun 14 Javascript
javascript使用substring实现的展开与收缩文字功能示例
Jun 17 Javascript
layui type2 通过url给iframe子页面传值的例子
Sep 06 Javascript
原生js拖拽实现图形伸缩效果
Feb 10 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
Sep 04 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
YB217、YB235、YB400浅听
2021/03/02 无线电
PHP 实现类似js中alert() 提示框
2015/03/18 PHP
PHP代码维护,重构变困难的4种原因分析
2016/01/25 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
javascript或asp实现的判断身份证号码是否正确两种验证方法
2009/11/26 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
js实现的黑背景灰色二级导航菜单效果代码
2015/08/24 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
js中判断变量类型函数typeof的用法总结
2016/08/09 Javascript
js获取隐藏元素的宽高
2017/02/24 Javascript
js实现放大镜特效
2017/05/18 Javascript
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
JavaScript中break、continue和return的用法区别实例分析
2020/03/02 Javascript
python生成ppt的方法
2018/06/07 Python
解决python Markdown模块乱码的问题
2019/02/14 Python
使用 Python 处理3万多条数据只要几秒钟
2020/01/19 Python
python filecmp.dircmp实现递归比对两个目录的方法
2020/05/22 Python
python 如何使用find和find_all爬虫、找文本的实现
2020/10/16 Python
python编程的核心知识点总结
2021/02/08 Python
Lands’ End官网:经典的美国生活方式品牌
2016/08/14 全球购物
波兰在线儿童和婴儿用品零售商:pinkorblue
2019/06/29 全球购物
行政助理的职责
2013/11/14 职场文书
护理专业大学生自我推荐信
2014/01/25 职场文书
优秀乡村医生事迹材料
2014/05/28 职场文书
教师思想作风整顿个人剖析材料
2014/10/10 职场文书
2014感恩节演讲稿大全
2014/10/11 职场文书
八项规定自查自纠报告及整改措施
2014/10/26 职场文书
人才市场接收函
2015/01/30 职场文书
小学生读书笔记范文
2015/06/30 职场文书
python 遍历磁盘目录的三种方法
2021/04/02 Python
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python
HDFS免重启挂载新磁盘
2022/04/06 Servers
Apache Hudi 加速传统的批处理模式
2022/04/24 Servers