最近一直工作比较忙,博客已经鸽了好久了,趁着今天是周末,写点东西吧

使用vuex来管理数据

  • 最近一直在用vue做项目,但是却从来没真正去用过vuex,因为一直感觉很复杂,其实真正去研究一下啊,就会发现很容易。

vuex中,有默认的五种基本的对象:

  • state:存储状态(变量)
  • getters:对数据获取之前的再次编译,可以理解为state的计算属性。我们在组件中使用 $sotre.getters.fun()
  • mutations:修改状态,并且是同步的。在组件中使用$store.commit('',params)。这个和我们组件中的自定义事件类似。
  • actions:异步操作。在组件中使用是$store.dispath('')
  • modules:store的子模块,为了开发大型项目,方便状态管理而使用的。这里我们就不解释了,用起来和上面的一样。

怎么引用这里就不介绍了,如果使用的是3.0cli,在创建项目的时候,选择安装vuex模块,会自动配置好store.js,很方便

定义变量

  • 在store.js中,你会发现有我上面提到的那些对象,这里随便定义个变量。

和页面中在data写变量差不多。

使用变量

  • 就和正常的变量使用是一样的,只不过前面是$store
  • {{$store.state.count}}
  • 到这一步你就已经会了一小半了,很简单的吧?

回想一下,我们只需要在下载安装使用vuex,在我们定义的store.js中定义state对象,并且暴露出去。

在main.js中使用我们的store.js(这里是为了防止在各个组件中引用,因为main.js中,有我们的new Vue 实例啊!)

现在我们已经使用了vuex中的state,接下来我们如何操作这个值呢? 没错!用mutations和actions

我们继续操作store.js文件


我们在sotre.js中定义mutations对象,该对象中有两个方法,mutations里面的参数,第一个默认为state,接下来的为自定义参数。

  // 其实说白了就是通过其他页面的方法来调用这里的方法,所以这里要写对数据的操作,会直接同步到state
mutations: {
add(state, n) {
state.xone = state.xone + n
},
remove(state, n) {
if (state.xone > 0) {
state.xone = state.xone - n
} else {
state.xone = 0
}
}
},

然后我们在页面中,使用这个方法

methods: {
add (n) {
// 首先,通过这个向vuex传一个函数,括号内的就是函数名,传到了actions里面。这个是异步更新的
this.$store.dispatch('addFun', n)
// 如果要直接修改state的值可以用下面这个,但是官方不推荐,这个是同步更新的
// this.$store.commit('add', n)
},
remove (n) {
// this.$store.commit('remove', n)
this.$store.dispatch('removeFun', n)
}
},
  • 当然了,这个n参数也是可以不传的,如果你需要一些计算的话,就传上

然后打开浏览器试一下吧,我们可以看到每当触发事件时,我们都可以在vue开发工具中看到我们触发的mutations方法,以及参数

完美!


接下来就是actions,actions是异步操作

创建actions对象,并且使用

actions: {
// 调用mutations的add方法,这个addFun是从其他页面定义的方法,mutations则是接参数,这个参数对应上面的mutations,
addFun(mutations, n) {
// 这个commit可以理解为调用上面的某个方法
mutations.commit('add', n)
},
// 调用上面的remove方法 removeFun(mutations, n) {
mutations.commit('remove', n)
}
}

getters它算是state的一个计算属性,目前还没怎么用过,以后补充

使用vuex来管理数据的更多相关文章

  1. vuex状态管理-数据改变不刷新

    困惑: 在页面初始化的时候,我提交到vuex状态管理,然后在获取的时候获取不到,我找到了出错的地点,并进行了修改,然后可以获取到状态 但是不知道原因? 定义了如下的state const state ...

  2. Electron-vue实战(三)— 如何在Vuex中管理Mock数据

    Electron-vue实战(三)— 如何在Vuex中管理Mock数据 作者:狐狸家的鱼 本文链接:Vuex管理Mock数据 GitHub:sueRimn 在vuex中管理mock数据 关于vuex的 ...

  3. Vuex异步请求数据通过computed计算属性值

    问题描述: 使用Vuex管理数据时,在组件内使用$emit分发事件后,获取回来的数据要自动更新到该组件内,需要使用computed来计算更新. 一开始尝试使用赋值给data的方法,后来发现重新发起aj ...

  4. vuex状态管理之学习笔记

    概述及使用场景 Vuex 是一个主要应用在中大型单页应用的类似于 Flux 的数据管理架构.它主要帮我们更好地组织代码,以及把应用内的的状态保持在可维护.可理解的状态. 但如果是简单的应用 ,就没有必 ...

  5. vuex数据管理-数据模块化

    对于vue这类mvvm框架来说,其核心就是组件与数据,因此做好相应的数据管理极为重要.这里分享下vuex数据模块化管理的方法,有利于搭建便于维护.协作的vue项目. vuex管理基本方法和使用 模块化 ...

  6. Vuex状态管理详解

    什么是Vuex 专门为vue应用程序开发的状态管理模式,采用集中式存储管理应用的所有组件的状态(数据),以相应的规则保证状态以一种可预测的方式发生改变 Vuex的作用(什么样的情况下使用Vuex) 多 ...

  7. vuex状态管理demo

    vuex状态管理主要包含四个概念  mapState,mapMutations,mapGetters,mapActions. 编写vuex文件夹下面的store.js import Vue from ...

  8. 前端Vue框架-vuex状态管理详解

    新人报道!多多关照-多提宝贵意见 谢谢- vuex理解 采用集中式存储管理模式.用来管理组件的状态,并以自定义规则去观测实时监听值得变化. 状态模式管理理解 属性 理解 state 驱动应用的数据源 ...

  9. 前端技术之:如何在vuex状态管理action异步调用结束后执行UI中的方法

    一.问题的起源 最近在做vue.js项目时,遇到了vuex状态管理action与vue.js方法互相通信.互操作的问题.场景如下图所示: 二.第一种解决方法 例如,我们在页面初始化的时候,需要从服务端 ...

随机推荐

  1. 关于sublime text2的一些问题(为解决)

    1. 编写markdown文件后,如何转成pdf ? 2. 执行程序时,如何在控制台输入数据?

  2. compass与css sprite(雪碧图)

    什么是css sprite? css sprite,中文叫雪碧图,也有人喊CSS精灵,就是一种背景拼合的技术,然后通过background-position来显示雪碧图中需要显示的图像. MDN相关链 ...

  3. 使用R拟合分布

    使用R拟合分布 几个常用的概率函数介绍 这里,参考R语言实战,以及[Fitting Distribution with R]的附录. 一.认识各种分布的形态 1.1 连续型随机变量的分布 首先,我们来 ...

  4. windows10环境运用SSH和SwitchySharp自由翱翔

    以下纯干货: 安装篇: 安装git bash(自行去找下载包) 安装xshell(开始想用它,后来直接在git bash里用命令搞定了,安装它SSH Server就可用了可能) 安装Chrome的插件 ...

  5. Java Annotation入门

    Java Annotation入门作者:cleverpig 版权声明:本文可以自由转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明作者:cleverpig(作者的Blog:http:/ ...

  6. UVA_490:Rotating Sentences

    "R  Ie   n  te  h  iD  ne  kc  ,a   r  tt  he  es  r  eo  fn  oc  re  e   s  Ia   i  ad  m,  .  ...

  7. MyBatis动态SQL(一)

    MyBatis 的强大特性之一便是它的动态 SQL.动态 SQL 元素和 JSTL 或基于类似 XML 的文本处理器相似.在 MyBatis 之前的版本中,有很多元素需要花时间了解.MyBatis 3 ...

  8. 【Linux】vim缩进配置 (转载)

    1.安装vim,终端输入: wanpeng@ubuntu:~$ sudo apt-get install vim-full 2.终端输入,打开配置文件: wanpeng@ubuntu:~$ vim ~ ...

  9. Java 调用restful webservice & jackson

    package com.bullshit.webcrawler.client.impl; import java.io.BufferedReader; import java.io.IOExcepti ...

  10. 读取Excel文件的两种方法比较 以及用NPOI写入Excel

    1. 采用NPOI方式,只需引用NPOI.dll,但目前最高只能到2.4.0版. 缺点:只支持.xls,不支持.xlsx格式.github上的2.4.1版支持.xlsx,但总提示缺ICSharpCod ...