简单的三步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 相关文章推荐
CSS+JS构建的图片查看器
Jul 22 Javascript
firefox火狐浏览器与与ie兼容的2个问题总结
Jul 20 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
Apr 25 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
Mar 10 Javascript
纯JS前端实现分页代码
Jun 21 Javascript
bootstrapValidator自定验证方法写法
Dec 01 Javascript
bootstrap table配置参数例子
Jan 05 Javascript
JavaScript实现无刷新上传预览图片功能
Aug 02 Javascript
详解node Async/Await 更好的异步编程解决方案
May 10 Javascript
解决Vue打包后访问图片/图标不显示的问题
Jul 25 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
Sep 15 jQuery
微信小程序用户登录和登录态维护的实现
Dec 10 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
哪吒敖丙传:新人物二哥敖乙出场 小敖丙奶气十足
2020/03/08 国漫
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
php上传文件并显示上传进度的方法
2015/03/24 PHP
php计算给定时间之前的函数用法实例
2015/04/03 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
JavaScript实现继承的4种方法总结
2014/10/16 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
浅谈jQuery中的checkbox问题
2016/08/10 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
jstree的简单实例
2016/12/01 Javascript
vue编译打包本地查看index文件的方法
2018/02/23 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
Vue 递归多级菜单的实例代码
2019/05/05 Javascript
使用JS实现动态时钟
2020/03/12 Javascript
详解ES6中class的实现原理
2020/10/03 Javascript
关于JavaScript中异步/等待的用法与理解
2020/11/18 Javascript
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
Django验证码的生成与使用示例
2017/05/20 Python
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
Python PyQt5模块实现窗口GUI界面代码实例
2020/05/12 Python
详解Python 循环嵌套
2020/07/09 Python
python进度条显示之tqmd模块
2020/08/22 Python
Harrods美国:英国最大的百货公司
2018/11/04 全球购物
彪马英国官网:PUMA英国
2019/02/11 全球购物
介绍一下sql server的安全性
2014/08/10 面试题
文秘专业个人求职信
2013/12/22 职场文书
篝火晚会主持词
2014/03/25 职场文书
应届生求职信范文
2014/05/26 职场文书
2014年电教工作总结
2014/12/19 职场文书
努力工作保证书
2015/02/28 职场文书
2015年收银员个人工作总结
2015/04/01 职场文书
代码复现python目标检测yolo3详解预测
2022/05/06 Python