getter方法的作用 vuex_Vuex的工作流程

Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
你不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation

vuex有哪几种属性

有五种,分别是State、 Getter、Mutation 、Action、Module

state => 基本数据(数据源存放地)

getters => 从基本数据派生出来的数据

mutations => 提交更改数据的方法,同步!

actions => 像一个装饰器,包裹mutations,使之可以异步。

modules => 模块化Vuex

a) 在vue组件里面,通过dispatch来触发actions提交修改数据的操作。

b) 然后再通过actions的commit来触发mutations来修改数据。

c) mutations接收到commit的请求,就会自动通过Mutate来修改state(数据中心里面的数据状态)里面的数据。

d) 最后由store触发每一个调用它的组件的更新

Vuex的作用:项目数据状态的集中管理,复杂组件(如兄弟组件、远房亲戚组件)的数据通信问题。

Vue组件(action里面的dispatch)---》actions(方法commit)---》mutations(Mutate)---》state(getter)---》store更新所有调用vuex的组件(Vue Component组件)

21001a554214a14d92570bd7bb7c291e.png
mapState辅助函数
computed: mapState([// 映射 this.count 为 store.state.count'count'
])相当于
computed:{count(){ return this.$store.state.count }
}computed: mapState({// 箭头函数可使代码更简练count: state => state.count,// 传字符串参数 'count' 等同于 `state => state.count`// countAlias : state => state.count,countAlias: 'count',// 为了能够使用 `this` 获取局部状态,必须使用常规函数countPlusLocalState (state) {return state.count + this.localCount}
})
通过属性访问的:
const store = new Vuex.Store({state: {todos: [{ id: 1, text: '...', done: true },{ id: 2, text: '...', done: false }]},getters: {doneTodos: state => {return state.todos.filter(todo => todo.done)},doneTodosCount: (state, getters) => {return getters.doneTodos.length}}
})//使用方法
computed: {doneTodosCount () {return this.$store.doneTodos  // [{ id: 1, text: '...', done: true }]}
}还有一种情况,自带getter参数的
//使用方法
computed: {doneTodosCount () {return this.$store.getters.doneTodosCount //2}
}
通过方法访问的:(注意,getter 在通过方法访问时,每次都会去进行调用,而不会缓存结果)
const store = new Vuex.Store({state: {todos: [{ id: 1, text: '...', done: true },{ id: 2, text: '...', done: false }]},getters: {getTodoById: (state) => (id) => {return state.todos.find(todo => todo.id === id)}}
})//使用方法
computed: {doneTodosCount () {return this.$store.getters.getTodoById(2) // -> { id: 2, text: '...', done: false }}
}
mapGetters函数
import { mapGetters } from 'vuex'export default {// ...computed: {// 使用对象展开运算符将 getter 混入 computed 对象中...mapGetters(['doneTodosCount','anotherGetter',// ...])}
}
//相当于
export default {// ...computed: {doneTodosCount:this.$store.getters.doneTodosCount,anotherGetter :this.$store.getters.anotherGetter }
}
mutation特点

每个 mutation 都有一个字符串的事件类型 (type)和 一个回调函数 (handler)。这个回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数:

const store = new Vuex.Store({state: {count: 1},mutations: {increment (state) {// 变更状态state.count++}}
})// ...
mutations: {increment (state, n) {state.count += n}
}store.commit('increment', 10)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大一新生计算机课word知识,大学新生计算机基础分层考试结果探析与启发.doc

大学新生计算机基础分层考试结果探析与启发大学新生计算机基础分层考试结果分析及启发   摘要:对计算机分层考试的结果进行统计分析,得出的主要结论包括:取消大学计算机基础课程是不合适的;大学新生对计算机基础理论知识的掌握非…

LeetCode 2884. 修改列

DataFrame employees ------------------- | Column Name | Type | ------------------- | name | object | | salary | int | ------------------- 一家公司决定增加员工的薪水。 编写一个解决方案,将每个员工的薪水乘以2来 修改 salary 列。 返回结果格式如下示…

对接第三方支付接口-类似文件锁的编程小技巧

在这次对接支付接口的时候,有如下场景:用户还款的时候,APP端只要请求了支付接口后,正常情况下,支付接口会同步返回结果状态,并且异步通知是否成功,支付状态以异步通知为准。这样的场景会出现一个…

从生态、业绩角度分析芯片行业

来源:国信证券生态角度:合作伙伴、底层架构、高级人才、EDA 软件技术的发展是从点到面,逐渐复杂。产业的发展也是从单一点突破,最后形成上下游产业链。伴随着技术变复杂和产业链延伸,市场形成稳定的生态结构&#xff0…

param注解报错_mybatis不加@Parm注解报错的解决方案

我的idea版本2017.3.4,低版本貌似不会加上这个配置,idea高版本会补充知识:Mybatis传多个参数的问题 及MyBatis报错 Parameter 0 not found. Available parameters are [arg1, arg0, param1 问题对于使用Mybatis ,传多个参数,我们可以使用对象封装外&…

tensorflow计算网络占用内存_详细图解神经网络梯度下降法(tensorflow计算梯度)...

1.什么是梯度各个方向的偏微分组成的向量​ 举例说明,z对x的偏微分和对y的偏微分如下,则梯度是(-2x,2y)的这样一个向量​ 在光滑连续函数的每个点上,都可以计算一个梯度,也就是一个向量&#xf…

ztree插件的使用

在bootstrap中使用ztree插件做树形架构,由于觉得原始的树形不够美观,所以改了其中的css插件 demo演示,以及各种属性的用法网站: http://www.treejs.cn/v3/demo.php#_107 修改页面风格网站: http://www.lai18.c…

耐驰测试仪上的软件,Proteus

Proteus - 扩展功能Proteus 软件的基本配置已经包含热分析各领域的所有主要功能。对于一些扩展性的测量与分析,我们提供下列可选组件:宏记录器使用事先录制的宏操作命令,对于相似的一系列常规测试结果进行自动分析,自动分析结果还…

关于数据中台系统,需要了解哪些技术?

来源:国家建材大数据研究中心今天让我们全面解读中台,包括企业为什么要平台化,目前中台都有哪些形式,实施中台系统的优势、面临的问题以及建议都有哪些?中台这个概念早期是由美军的作战体系演化而来的,技术…

ios请求头解决参数中文乱码_花了一天时间就解决了一个的请求头传参参数格式bug...

一天的时间就解决了一个bug就这么过去了,但不能让他就这么过去了,加班要加的有价值,所以现在记录一下这一天的经历,以防下次再踩坑大致说下我的情况,入坑的不久的前端新手,在做一个项目的重构,用…

python for循环连续输入五个成绩判断等级_Python条件循环判断

1.条件判断语句 Python中条件选择语句的关键字为:if 、elif 、else这三个。其基本形式如下: 1 2 3 4 5 6 7 8 9 age_of_cc 27 age int(input("guessage:")) if age age_of_cc: print("Yes,you got it!") elif age > age_of_cc: p…

用注册表禁止windows添加新用户

运行 regedt32.exe 打开你的注册表,里面有一个目录树:打开其中目录 HKEY_LOCAL_MACHINE再打开其中目录 SAM再打开其中目录 SAM再打开其中目录 Domains再打开其中目录 Account再打开其中目录 Groups好了,就是这个 Groups 就是负责建立用户的。…

显示当前没有家庭组计算机,已创建家庭组且加入家庭组,但显示“当前没有其他可用的家庭组计算机?”...

出现的问题:无法查询家庭组其他可用的计算机情况:1、家里一台WIN7 旗舰版,一台WIN7 家庭普通版2、在 旗舰版 电脑创建了家庭组,并在另一台输入密码,且成功加入加家庭组3、在 电脑控制面板中,“网络”里&…

人工智能的下半场,一定少不了自监督学习

来源:AI科技评论作者 | Lilian Wang 王荔编译 | MrBear对于给定的任务,在拥有足够的标签的情况下,监督式学习可以很好地解决该问题。想要得到好的性能,往往需要大量的数据标签,但是手动收集数据的成本很高(…

bert 多义词_BERT之后,GLUE基准升级为SuperGLUE:难度更大

选自Medium作者:Alex Wang等机器之心编译参与:PandaBERT 等模型的进展已让 GLUE 基准在新模型的评估方面日渐乏力,为推动 NLP 技术的进一步发展,有必要对 GLUE 指标进行更新。为此,纽约大学、Facebook 人工智能研究所、…

thread.sleep是让哪个线程休眠_Java多线程:多线程基础知识

点击上方☝SpringForAll社区 轻松关注!及时获取有趣有料的技术文章本文来源:https://www.cnblogs.com/ITtangtang/p/7602363.html一、线程安全性定义:多个线程之间的操作无论采用何种执行时序或交替方式,都要保证不变性条件不被破…

拉格朗日插值函数计算机实现流程图,拉格朗日插值实验报告.doc

实验名称: 实验一 拉格朗日插值引言我们在生产生活中常常会遇到这样的问题:某个实际问题中,函数f(x)在区间[a,b]上存在且连续,但找到其表达式,只能通过实验和观测得到有限点上的函数表。有些情况虽然可以写出表达式&am…

整个领域没了!学术界有史以来最大的丑闻

来源:中大科技处10月15日,学术界发生了一件大事。哈佛终身教授学术造假,31篇文献被撤,无数研究化为泡影……哈佛一次性从各类顶尖期刊上撤稿了31篇论文,整个心肌干细胞相关的研究被认定为“从一开始就基于欺诈性数据”…

布隆过滤器误判怎么办为什么会_最牛一篇布隆过滤器详解,布隆过滤器使用原理...

前言我们之前讲了Redis的缓存雪崩、穿透、击穿。在文章里我们说了解决缓存穿透的办法之一,就是布隆过滤器,但是上次并没有讲如何使用布隆过滤器。作为暖男的老哥,给你们补上,请叫我IT老暖男。什么是布隆过滤器布隆过滤器(Bloom Fi…