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组件)

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)

getter方法的作用 vuex_Vuex的工作流程相关推荐

  1. getter方法的作用 vuex_Vuex入门篇——基本使用

    开始前,请尝试理解下面这张图的关系,或许有助于你理解下面的有关Vuex的使用介绍. Vuex使用方法 题题题1.安装   如果你已经开始了一个项目,我们直接运行命令安装Vuex npm install ...

  2. getter方法的作用 vuex_vuex Getter

    我们需要从store中的state中派生出一些状态,例如对列表进行过滤并计数: computed:{ doneTodosCount(){ return this.$store.state.todos. ...

  3. 方法 | 机器学习(深度学习)通用工作流程

    机器学习(深度学习)通用工作流程 Deep Learning with Python 4.5节 1. 定义问题并装载数据集(Defining the problem and assembling a ...

  4. GPU 与CPU的作用协调,工作流程、GPU整合到CPU得好处

    在不少人的心目中,显卡最大的用途可能就只有两点--玩游戏.看电影,除此之外,GPU并没有其他的作用了.但是随着微软IE9的正式发布,不少人突然发现,微软一直提到一个名词:GPU硬件加速,从而也让不少人 ...

  5. SOTIF预期功能安全工作流程

    预期功能安全系列文章 SOTIF预期功能安全理解及分析方法 SOTIF预期功能安全工作流程 文章目录 预期功能安全系列文章 SOTIF预期功能安全工作流程 SOTIF预期功能安全工作流程

  6. Sitecore 8.2 工作流程

    假设您的新Sitecore项目的所有开发都已完成.现在的下一步是在网站上填写内容并准备上线.客户通知您他们希望使用专门的网站管理员团队负责整个内容管理流程,并要求您为他们准备实例以便能够执行此操作. ...

  7. 一、scrapy爬虫框架——概念作用和工作流程 scrapy的入门使用

    scrapy的概念和流程 学习目标: 了解 scrapy的概念 了解 scrapy框架的作用 掌握 scrapy框架的运行流程 掌握 scrapy中每个模块的作用 1. scrapy的概念 Scrap ...

  8. 4-2 能力提升与优势打造-工作流程梳理-从执行跃迁到流程的方法流程化、工具化、清单化

    本次目标: (1)获得从基础琐碎的工作中锻炼能力.干出成绩的方法 (2)学习流程化.工具化.清单化这三个方法 (3)沉淀工作经验,迅速摆脱基层岗位的经验束缚 (4)具备管理岗位具备的能力,加速职业发展 ...

  9. Scrapy框架的概念、作用和工作流程

    1. scrapy的概念         Scrapy是一个Python编写的开源网络爬虫框架.它是一个被设计用于爬取网络数据.提取结构性数据的框架. Scrapy是一个为了爬取网站数据,提取结构性数 ...

最新文章

  1. vue + axios---封装一个http请求
  2. usb类调用失败解释
  3. 白话SpringCloud | 第八章:分布式配置中心的服务化及动态刷新
  4. 变阻感器测量位移的计算机流程图,传感器工作流程图
  5. Base64编码算法
  6. 简述Intel的MESI缓存一致性协议
  7. @ResponseBody,@RequestBody,@PathVariable
  8. gtest测试框架使用详解_测试框架TestNG使用介绍
  9. 萌新的Python练习实例100例(七)将一个列表的数据复制到另一个列表中
  10. selenium 获取不了标签文本的解决方法
  11. OSI参考模型与排错
  12. 惠普1005打印机自检页_HP黑白激光打印机打印自检页的方法
  13. 贪心算法--会议安排
  14. 微软Kinect是怎么做到的
  15. 【cs224n-11】Contextual Word Representations: BERT
  16. 关于Android 日历事件的实现
  17. 大数据时代,你应该知道的生活真相(下)
  18. 论文阅读:VoltJockey: Breaching TrustZone by Software-Controlled Voltage Manipulation over
  19. Android Studio设置关闭当前页面的快捷键
  20. 【论文笔记】PlenOctrees for Real-time Rendering of Neural Radiance Fields

热门文章

  1. 为什么百度统计里面的广告那么多_里面东西一模一样的桶装方便面为什么比袋装贵那么多?...
  2. python内置的集成开发工具是什么_python内置的集成开发工具是什么_后端开发
  3. win10主题更换_还不升级? win10精简版不到10G,运行比win7还快,旧电脑的福音
  4. java json转二进制数据_JSON字符串中的二进制数据 . 比Base64更好的东西
  5. linux内核线程绑定到单个核,linux 将进程或者线程绑定到指定的cpu上
  6. 简单循迹小车实验心得_红外自动循迹小车实验报告
  7. 为什么每次有人大声通电话时,我就很烦躁...
  8. 会议交流—PPT下载|DataFunSummit2022:知识图谱在线峰会PPT合集!
  9. transformer 中的注意力机制和胶囊网络中的动态路由:它们在本质上或许具有相似性
  10. 一步步手动实现热修复(二)-类的加载机制简要介绍