简单的三步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 03 Javascript
js中for in的用法示例解析
Dec 25 Javascript
一个简单的jquery进度条示例
Apr 28 Javascript
关于JavaScript命名空间的一些心得
Jun 07 Javascript
javascript实现简单的全选和反选功能
Jan 05 Javascript
jquery实用技巧之输入框提示语句
Jul 28 Javascript
微信小程序 利用css实现遮罩效果实例详解
Jan 21 Javascript
详解webpack打包vue时提取css
May 26 Javascript
nginx配置React静态页面的方法教程
Nov 03 Javascript
JavaScript函数节流和函数去抖知识点学习
Jul 31 Javascript
JavaScript根据json生成html表格的示例代码
Oct 24 Javascript
解决vue中的无限循环问题
Jul 27 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使用fputcsv()函数csv文件读写数据的方法
2015/01/06 PHP
PHP CURL 内存泄露问题解决方法
2015/02/12 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
JavaScript 无符号右移赋值操作
2009/04/17 Javascript
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
window.event快达到全浏览器支持了,以后使用就方便了
2011/11/30 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
2013/11/21 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
python的几种开发工具介绍
2007/03/07 Python
深入解析Python中的urllib2模块
2015/11/13 Python
python3.4用函数操作mysql5.7数据库
2017/06/23 Python
在python中使用正则表达式查找可嵌套字符串组
2017/10/24 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
2018/01/04 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
opencv设置采集视频分辨率方式
2019/12/10 Python
如何基于Python创建目录文件夹
2019/12/31 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
2020/07/20 Python
CSS3实现滚动条动画效果代码分享
2016/08/03 HTML / CSS
CSS3+JavaScript实现炫酷呼吸效果的示例代码
2020/06/15 HTML / CSS
HTML5 中新的全局属性(整理)
2013/07/31 HTML / CSS
卡骆驰德国官方网站:Crocs德国
2019/03/29 全球购物
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
AJAX检测用户名是否存在的方法
2021/03/24 Javascript
工商管理专业实习生自我鉴定
2013/09/29 职场文书
博士生入学考试推荐信
2013/11/17 职场文书
八年级数学教学反思
2014/01/31 职场文书
舞蹈比赛获奖感言
2014/02/04 职场文书
保险专业自荐信范文
2014/02/20 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
学习雷锋精神演讲稿
2014/05/10 职场文书
挂靠协议书
2015/01/27 职场文书
公务员岗前培训心得体会
2016/01/08 职场文书