简单的三步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 相关文章推荐
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
Apr 02 Javascript
JavaScript中诡异的delete操作符
Mar 12 Javascript
jquery控制表单输入框显示默认值的方法
May 22 Javascript
jquery采用oop模式class类的使用示例
Jan 22 Javascript
原生js实现倒计时--2018
Feb 21 Javascript
Angular2使用Angular CLI快速搭建工程(一)
May 21 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
Jul 18 jQuery
[js高手之路]单例模式实现模态框的示例
Sep 01 Javascript
JavaScript实现三级级联特效
Nov 05 Javascript
解决vue 更改计算属性后select选中值不更改的问题
Mar 02 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
Nov 18 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
May 22 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
磨咖啡豆的密诀
2021/03/03 冲泡冲煮
php MySQL与分页效率
2008/06/04 PHP
php 文件上传系统手记
2009/10/26 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
ASP Json Parser修正版
2009/12/06 Javascript
javascript showModalDialog 内跳转页面的问题
2010/11/25 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
利用jq让你的div居中的好方法分享
2013/11/21 Javascript
JavaScript判断数组是否包含指定元素的方法
2015/07/01 Javascript
jquery+php实现滚动的数字特效
2015/11/29 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
2017/06/08 Javascript
详解webpack的配置文件entry与output
2017/08/21 Javascript
jQuery pager.js 插件动态分页功能实例分析
2019/08/02 jQuery
Vue+Vant 图片上传加显示的案例
2020/11/03 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
win7下python3.6安装配置方法图文教程
2018/07/31 Python
python实现飞机大战游戏
2020/10/26 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
基于python实现雪花算法过程详解
2019/11/16 Python
Python爬虫爬取新闻资讯案例详解
2020/07/14 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
Python 微信公众号文章爬取的示例代码
2020/11/30 Python
工商管理专业毕业生求职信
2014/05/26 职场文书
创先争优公开承诺书
2014/08/30 职场文书
党员“四风”方面存在问题及整改措施
2014/09/24 职场文书
政府领导干部个人对照检查材料思想汇报
2014/09/24 职场文书
商业用房租赁协议书
2014/10/13 职场文书
2015毕业生实习期工作总结
2015/04/09 职场文书
公司员工辞职信范文
2015/05/12 职场文书
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript