无标题文章

简介: 1. 映射为计算属性state: mapStates getters: mapGetters对 state 进行运算、过滤返回新的状态getters:接收 state 作为第一个参数,其它 getters 作为第二个参数getters: { // ... doneTodosCount: (state, getters) => { return getters.doneTodos.length }}让 getter 返回一个函数,来实现给 getter 传参。

1. 映射为计算属性

state: mapStates 
getters: mapGetters
对 state 进行运算、过滤返回新的状态

getters:接收 state 作为第一个参数,其它 getters 作为第二个参数

getters: {
  // ...
  doneTodosCount: (state, getters) => {
    return getters.doneTodos.length
  }
}

让 getter 返回一个函数,来实现给 getter 传参。在你对 store 里的数组进行查询时非常有用。

getters: {
  // ...
  getTodoById: (state, getters) => (id) => {
    return state.todos.find(todo => todo.id === id)
  }
}
store.getters.getTodoById(2) // -> { id: 2, text: '...', done: false }

2. 映射为 mutation

你可以在组件中使用 this.$store.commit('xxx') 提交 mutation,或者使用 mapMutations 辅助函数将组件中的 methods 映射为 store.commit 调用(需要在根节点注入 store)。

import { mapMutations } from 'vuex'

export default {
  // ...
  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')`
    })
  }
}

3. 执行 action

Action 类似于 mutation,不同在于:

  • Action 提交的是 mutation,而不是直接变更状态。
  • Action 可以包含任意异步操作。
const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state) {
      state.count++
    }
  },
  actions: {
    increment (context) {
      context.commit('increment')
    }
  }
})
在组件中分发 Action

你在组件中使用 this.$store.dispatch('xxx') 分发 action,或者使用 mapActions 辅助函数将组件的 methods 映射为 store.dispatch 调用(需要先在根节点注入 store):

import { mapActions } from 'vuex'

export default {
  // ...
  methods: {
    ...mapActions([
      'increment', // 将 `this.increment()` 映射为 `this.$store.dispatch('increment')`

      // `mapActions` 也支持载荷:
      'incrementBy' // 将 `this.incrementBy(amount)` 映射为 `this.$store.dispatch('incrementBy', amount)`
    ]),
    ...mapActions({
      add: 'increment' // 将 `this.add()` 映射为 `this.$store.dispatch('increment')`
    })
  }
}
目录
相关文章
|
测试技术 Android开发 虚拟化
踩坑记录 | Android 逆向之如何处理 Kali Nat 模式无法上网?
踩坑记录 | Android 逆向之如何处理 Kali Nat 模式无法上网?
754 0
|
7月前
|
前端开发 JavaScript API
JSAR 交互式菜单开发实战:打造沉浸式 3D 导航体验
本文介绍如何使用JSAR框架在Rokid智能眼镜上开发3D交互式菜单系统。通过Babylon.js创建按钮、动态纹理与动画,结合空间计算实现沉浸式导航体验,涵盖多视图切换、信息面板与手势适配,助力打造直观高效的AR界面。
|
人工智能 搜索推荐 机器人
一款开源的宝藏聊天机器人Typebot
Typebot 是一个强大的开源聊天机器人框架,支持多种 AI 模型,包括 Claude 3.5 和 Dify.AI 助手,适用于客服、电商推荐等场景。它通过 Webhook 块实现与外部服务的交互,帮助开发者轻松创建和管理对话式 AI 应用。通过阿里云账号登录,即可快速创建和部署自己的聊天机器人。
|
开发者 Python
使用Python实现自动化邮件通知:当长时程序运行结束时
本文介绍了如何使用Python实现自动化邮件通知功能,当长时间运行的程序完成后自动发送邮件通知。主要内容包括:项目背景、设置SMTP服务、编写邮件发送函数、连接SMTP服务器、发送邮件及异常处理等步骤。通过这些步骤,可以有效提高工作效率,避免长时间等待程序结果。
841 9
|
缓存 监控 算法
基于 C# 网络套接字算法的局域网实时监控技术探究
在数字化办公与网络安全需求增长的背景下,局域网实时监控成为企业管理和安全防护的关键。本文介绍C#网络套接字算法在局域网实时监控中的应用,涵盖套接字创建、绑定监听、连接建立和数据传输等操作,并通过代码示例展示其实现方式。服务端和客户端通过套接字进行屏幕截图等数据的实时传输,保障网络稳定与信息安全。同时,文章探讨了算法的优缺点及优化方向,如异步编程、数据压缩与缓存、错误处理与重传机制,以提升系统性能。
321 2
|
存储 JavaScript 前端开发
深入理解 JavaScript 执行上下文与 this 绑定机制
JavaScript 代码执行时,会为每段可执行代码创建对应的执行上下文,其中包含三个重要属性:变量对象、作用域链、和 this。本文深入剖析了执行上下文的生命周期以及 this 在不同情况下的指向规则。通过解析全局上下文和函数上下文中的 this,我们详细讲解了 this 的运行期绑定特性,并展示了如何通过调用方式影响 this 的绑定对象。同时,文中对箭头函数 this 的特殊性以及四条判断 this 绑定的规则进行了总结,帮助开发者更清晰地理解 JavaScript 中的 this 行为。
5189 8
深入理解 JavaScript 执行上下文与 this 绑定机制
|
存储 缓存 监控
万能架构设计:ES+Redis+MySQL,这套组合可应对80%业务场景(2)
万能架构设计:ES+Redis+MySQL,这套组合可应对80%业务场景
32738 6
数字信号处理音频FIR去噪滤波器(基于MATLAB GUI的开发完整代码+报告+课设)
数字信号处理音频FIR去噪滤波器(基于MATLAB GUI的开发完整代码+报告+课设)
599 0
数字信号处理音频FIR去噪滤波器(基于MATLAB GUI的开发完整代码+报告+课设)
|
数据采集 机器学习/深度学习 搜索推荐
覆盖四种场景、包含正负向反馈,腾讯、西湖大学等发布推荐系统公开数据集Tenrec(2)
覆盖四种场景、包含正负向反馈,腾讯、西湖大学等发布推荐系统公开数据集Tenrec
468 0
|
设计模式 测试技术 程序员
系统困境与软件复杂度,为什么我们的系统会如此复杂
![](https://ata2-img.oss-cn-zhangjiakou.aliyuncs.com/neweditor/fd86aea9-c53b-4847-9b3c-b9bc6ee53e10.png) # 前言 有一天,一个医生和一个土木工程师在一起争论“谁是世界上最古老的职业”。医生说:“上帝用亚当的肋骨造出了夏娃,这是历史上第一次外科手术,所以最古老的职业应该是医生”,土木工程师说:“
2433 2
系统困境与软件复杂度,为什么我们的系统会如此复杂