Vuex 使用及简单实例(计数器)


Posted in Javascript onAugust 29, 2018

前一段时间因为需要使用vue,特地去学习了一下。但是时间匆忙vuex没有接触到,今天闲暇时看了解了一下vuex,并做了一个小demo,用于记录vuex的简单使用过程。

什么是Vuex?

vuex是专门为vue.js应用程序开发的一种状态管理模式,当多个视图依赖于同一个状态或是多个视图均可更改某个状态时,将共享状态提取出来,全局管理。

引入Vuex(前提是已经用Vue脚手架工具构建好项目)

1、利用npm包管理工具,进行安装 vuex。在控制命令行中输入下边的命令就可以了。

npm install vuex --save

要注意的是这里一定要加上 ?save,因为你这个包我们在生产环境中是要使用的。

2、新建一个store文件夹(这个不是必须的),并在文件夹下新建store.js文件,文件中引入我们的vue和vuex。

import Vue from 'vue';
import Vuex from 'vuex';

3、使用我们vuex,引入之后用Vue.use进行引用。

Vue.use(Vuex);

通过这三步的操作,vuex就算引用成功了,接下来我们就可以尽情的玩耍了。

4、在main.js 中引入新建的vuex文件

import storeConfig from './vuex/store'

5、再然后 , 在实例化 Vue对象时加入 store 对象 :

new Vue({
  el: '#app',
  router,
  store,//使用store
  template: '<App/>',
  components: { App }
 })

下面是一个计数器的例子

在src目录下创建一个store文件夹。

src/store.js

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
 state: {
 count: 0,
 show: ''
 },
 getters: {
 counts: (state) => {
  return state.count
 }
 },
 mutations: {
 increment: (state) => {
  state.count++
 },
 decrement: (state) => {
  state.count--
 },
 changTxt: (state, v) => {
  state.show = v
 }
 }
})

export default store

state就是我们的需要的状态,状态的改变只能通过提交mutations,例如:

handleIncrement () {
  this.$store.commit('increment')
 }

带有载荷的提交方式:

changObj () {
  this.$store.commit('changTxt', this.obj)
 }

当然了,载荷也可以是一个对象,这样可以提交多个参数。

changObj () {
  this.$store.commit('changTxt', {
   key:''
  })
 }

在main.js中引入store.js

import store from './store/store'
export default new Vue({
 el: '#app',
 router,
 store,
 components: {
 App
 },
 template: '<App/>'
})

在组件中使用

在组建可以通过$store.state.count获得状态

更改状态只能以提交mutation的方式。

<template>
<div class="store">
 <p>
 {{$store.state.count}}
 </p>
 <el-button @click="handleIncrement"><strong>+</strong></el-button>
 <el-button @click="handleDecrement"><strong>-</strong></el-button>
 <hr>
 <h3>{{$store.state.show}}</h3>
 <el-input
 placeholder="请输入内容"
 v-model="obj"
 @change="changObj"
 clearable>
 </el-input>
</div>
</template>
<script>
export default {
 data () {
 return {
  obj: ''
 }
 },
 methods: {
 handleIncrement () {
  this.$store.commit('increment')
 },
 handleDecrement () {
  this.$store.commit('decrement')
 },
 changObj () {
  this.$store.commit('changTxt', this.obj)
 }
 }
}
</script>

到这里这个demo就结束了,

Vuex 使用及简单实例(计数器)

感觉整个个过程就是一个传输数据的过程,有点类似全局变量,但是vuex是响应式的。

这里当然并没有完全发挥出全部的vuex,

vuex还在学习中,写这篇文章主要是记录其简单的使用过程。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Prototype PeriodicalExecuter对象 学习
Jul 19 Javascript
基于jquery的tab切换 js原理
Apr 01 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
Mar 26 Javascript
JavaScript改变CSS样式的方法汇总
May 07 Javascript
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
Jan 26 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
Jun 24 Javascript
jQuery将表单序列化成一个Object对象的实例
Nov 29 Javascript
BootstrapValidator超详细教程(推荐)
Dec 07 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
Jul 31 Javascript
解决VUEX兼容IE上的报错问题
Mar 01 Javascript
微信小程序拼接图片链接无底洞深入探究
Sep 03 Javascript
原生js滑动轮播封装
Jul 31 Javascript
浅谈Vue.use的使用
Aug 29 #Javascript
微信小程序支付前端源码
Aug 29 #Javascript
微信小程序使用swiper组件实现类3D轮播图
Aug 29 #Javascript
javascript中UMD规范的代码推演
Aug 29 #Javascript
详解webpack自定义loader初探
Aug 29 #Javascript
在vue中使用SockJS实现webSocket通信的过程
Aug 29 #Javascript
微信小程序自定义select下拉选项框组件的实现代码
Aug 28 #Javascript
You might like
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
php中http与https跨域共享session的解决方法
2014/12/20 PHP
php简单防盗链实现方法
2015/07/29 PHP
PHP读取mssql json数据中文乱码的解决办法
2016/04/11 PHP
laravel框架添加数据,显示数据,返回成功值的方法
2019/10/11 PHP
TNC vs BOOM BO3 第二场2.13
2021/03/10 DOTA
JavaScript 封装Ajax传递的数据代码
2009/06/05 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
使用jQuery获得内容以及内容的属性
2015/02/26 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
javascript insertAfter()定义与用法示例
2016/07/25 Javascript
JavaScript随机打乱数组顺序之随机洗牌算法
2016/08/02 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
2016/10/20 Javascript
js 定位到某个锚点的方法
2016/11/19 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
2017/01/05 Javascript
vue两个组件间值的传递或修改方式
2018/07/04 Javascript
关于微信小程序登录的那些事
2019/01/08 Javascript
JS函数本身的作用域实例分析
2020/03/16 Javascript
jQuery-App输入框实现实时搜索
2020/11/19 jQuery
在Python的setuptools框架下生成egg的教程
2015/04/13 Python
Python3编程实现获取阿里云ECS实例及监控的方法
2017/08/18 Python
浅析python参数的知识点
2018/12/10 Python
keras的load_model实现加载含有参数的自定义模型
2020/06/22 Python
用CSS3实现瀑布流布局的示例代码
2017/11/10 HTML / CSS
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
光电信息专业应届生求职信
2013/10/07 职场文书
电钳工人个人求职信
2014/05/10 职场文书
文明工地标语
2014/06/16 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
自我检讨报告
2015/01/28 职场文书
西柏坡导游词
2015/02/05 职场文书
医院办公室主任岗位职责
2015/04/01 职场文书
运动会开幕式主持词
2015/07/01 职场文书
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server
golang为什么要统一错误处理
2022/04/03 Golang