vuex相关的知识
vue的核心是store,它可以看作是一个容器,它包含着应用中的状态state(state,mutations,actions,getters, modules).它中的存储是响应式的,当store中的状态发生改变时,相应的组件也会发生变化.仓库中的状态值是不能直接改变的,
唯一的改变就是通过显示的提交(commit mutations).状态主要是通过调用mutations中方法来进行改变的.
state 可以看做是状态的定义,或者说是属性.{获取state中的属性:$store.state.dialog.count}其中dialog是提出去的状态模块. mutations 如果我们操作的对象,需要好多状态,这时候mutations应运而生, {调用mutations中的方法:$store.commit('switch_dialog')}来触发 mutations 中的 switch_dialog 方法,该里面的方法主要是用来改变
state中的状态值,其中第二个数,可以作为参数传递 actions 如果需要执行多个mutations,就需要使用actions,$store.dispatch('switch_dialog')来触发actions中的 switch_dialog 方法,也可以传递参数
getters 是用来计算state 然后生成新的数据 ( 状态 ) 的。 如果很多很多个组件中都需要用到这个与 show 刚好相反的状态 ,
那么我们需要写很多很多个 not_show , 使用 getters 就可以解决这种问题 :$store.getters.not_show,getters方法中也可以接受其他getters参数作为第二参数,
也可以通过传递参数给getters中.$store.getters['dialog/getParamer'](1)
一些辅助函数:
import { mapState,mapGetters,mapMutations,mapActions} from 'vuex' //辅助函数
computed:{
...mapState({count:state =>state.other.count}) 若使用模块化,使用这个来获取状态
...mapState({aaaaa:'count'}) 若vuex中没有使用模块化,可用这个来获取状态
}
...mapGetters({
getTest:'getTest',
}
methods: {
...mapMutations([
'increment', // 将 `this.increment()` 映射为 `this.$store.commit('increment')`
// `mapMutations` 也支持载荷:
'incrementBy' // 将 `this.incrementBy(amount)` 映射为 `this.$store.commit('incrementBy', amount)`
]),
...mapMutations({
add: 'increment' // 将 `this.add()` 映射为 `this.$store.commit('increment')`
})
}
我自己对这几个的理解区别是:
state 是属性.它的值获取可以根据状态的模块来进行取值,即使两个状态名称相同,也可以取到不同的值
mutations 是改变属性,调用的过程,是调用所有状态模块中mutations 中的该方法,所以两个状态都会按照各自的方式进行改变
actions 是调用mutations中的方法,如果它调用的是所有状态模块中的方法,所以mutations中所有的该方法有几个,就会执行几次
getter 主要是获取计算状态的值,相当于计算属性.该方法所有的状态模块应当只能是唯一的名称,如果另外的状态模块也有这个方法,控制台会报错,但是不会影响运行,数值将会取在最前模块的值
为了解决上面相互依赖的问题,我们可以使用namespaced = true 属性来绑定路径
配置之后使用:
$store.state.dialog.show用来获得状态
使用 $store.commit('switch_dialog') 来触发 mutations 中的 switch_dialog 方法
mutations 中的方法是不分组件的 ,mutations里的操作必须是同步的。只是官方推荐 , 不要在 mutationss 里执行异步操作而已。 多个 state 的操作 , 使用 mutations 会来触发会比较好维护 , 那么需要执行多个 mutations 就需要用 action 了。官方推荐 , 将异步操作放在 action 中。
$store.dispatch('switch_dialog') 来触发 actions 里的 switch_dialog 方法
***********最好方法名是独一无二的,因为他会执行所有的当前的方法********* $store.getters.not_show 来获得状态 not_show 。
那么 , 如果很多很多个组件中都需要用到这个与 show 刚好相反的状态 , 那么我们需要写很多很多个 not_show , 使用 getters 就可以解决这种问题 :
注意 : $store.getters.not_show 的值是不能直接修改的 , 需要对应的 state 发生变化才能修改。 为了方便起见:使用mapState、mapGetters、mapActions 就不会这么复杂了
mapGetters 一般也写在 computed 中 , mapActions 一般写在 methods 中。 例:
<template>
<el-dialog :visible.sync="show"></el-dialog>
</template> <script>
import {mapState} from 'vuex';
export default {
computed:{ //这里的三点叫做 : 扩展运算符
...mapState({
show:state=>state.dialog.show
}),
}
}
</script>
vuex相关的知识的更多相关文章
- .NET同步与异步之相关背景知识(六)
在之前的五篇随笔中,已经介绍了.NET 类库中实现并行的常见方式及其基本用法,当然.这些基本用法远远不能覆盖所有,也只能作为一个引子出现在这里.以下是前五篇随笔的目录: .NET 同步与异步之封装成T ...
- Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->Spring Framework中web相关的知识(概述)
Spring Framework中web相关的知识 1.概述: 参考资料:官网documentation中第22小节内容 关于spring web mvc: spring framework中拥有自 ...
- iOS蓝牙开发(二)蓝牙相关基础知识
原文链接: http://liuyanwei.jumppo.com/2015/07/17/ios-BLE-1.html iOS蓝牙开发(一)蓝牙相关基础知识: 蓝牙常见名称和缩写 MFI ====== ...
- iOS网络相关零散知识总结
iOS网络相关零散知识总结 1. URL和HTTP知识 (1) URL的全称是Uniform Resource Locator(统一资源定位符). URL的基本格式 = 协议://主机地址/路径 ...
- 深入理解mysql之BDB系列(1)---BDB相关基础知识
深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富 一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1 ...
- 【RAC】RAC相关基础知识
[RAC]RAC相关基础知识 1.CRS简介 从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...
- vue.js和vue-router和vuex快速上手知识
vue.js和vue-router和vuex快速上手知识 一直以来,认为vue相比react而言,学习成本会更低,会更简单,但最近真正接触后,发现vue的各方面都有做一些客户化的优化,有一些亮点,但也 ...
- Linux实战教学笔记19:Linux相关网络知识梳理
第十九节 Linux相关网络知识梳理 标签(空格分隔): Linux实战教学笔记-陈思齐 一,前言 一个运维有时也要和网络打交道,所以具备最基本的网络知识,对一个运维人员来说是必要的.但,对于我们的工 ...
- day 28 网络基础相关的知识
1.网络基础相关的知识 架构 C/S 架构: client 客户端 server服务器端 优势: 能充分发挥PC机的性能 B/S 架构: browser 浏览器 server服务器 隶 ...
随机推荐
- YTU 2432: C++习题 对象数组输入与输出
2432: C++习题 对象数组输入与输出 时间限制: 1 Sec 内存限制: 128 MB 提交: 1603 解决: 1152 题目描述 建立一个对象数组,内放n(n<10)个学生的数据( ...
- Serializable 接口与 Java 序列化与反序列化
0. 序列化的意义 从内存到本地即为本地化或者在网络中进行传输,或叫序列化,持久化. 某 Java 类实现 Serializable 接口的目的是为了可持久化(简单理解为本地化),比如网络传输或本地存 ...
- uoj 30 tourists
题目大意: 一个无向图 每个点有权值 支持两个操作 1 修改某个点的权值 2 查询a-b所有简单路径的点上的最小值 思路: 可以把图变成圆方树 然后树链剖分 维护 对于每个方点使用可删堆维护 #inc ...
- bzoj3668 [Noi2014]起床困难综合症——贪心
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3668 一开始想着倒序推回去看看这一位能不能达到来着,因为这样好中途退出(以为不这样会T): ...
- 2. Ext中关于Ext.QuickTips.init()的使用
转自:http://www.cnblogs.com/jianglan/archive/2011/08/26/2154120.html 在extJS的例子中,大部分都在程序第一行使用了如下语句:Ext. ...
- 06_传智播客iOS视频教程_源文件后缀名和main函数
OC与C语言的不同. 把OC程序运行起来,CPU只会找main函数.并且只会执行main函数当中的代码.当main函数的代码执行完毕之后这个程序就自动结束掉了. main函数的参数是可以让我们在运行程 ...
- eclipse集成lombok注解不起作用
安装步骤: 步骤一:lombok的下载地址为:https://projectlombok.org/download,jar包很小.这里也把依赖写出来: <dependency> <g ...
- NOIp 2017 奶酪 【并查集】 By cellur925
题目传送门 Orz去年考场上做这道题的我应该还在抱怨没学过空间几何,不一会太困了就开始打瞌睡,然后为了防止睡觉开始在devc++上写默写离骚(逃 思路:如果两个空洞相交,那么把他们并在一个集合里.最后 ...
- python 学习笔记二 (列表推导式)
2018年年初写了第一篇博客,说要做一个认真的技术人 https://www.cnblogs.com/yingchen/p/8455507.html 今天已经是11月19日了,这是第二篇博客,看来坚持 ...
- hdu 1863 畅通工程(Kruskal+并查集)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...