当前位置: 首页 > news >正文

vue之vuex

Vuex 是 Vue.js 的一个状态管理模式和库,为应用中的所有组件提供了一个集中式的存储管理,并提供了一种强大的方式来管理应用的状态。Vuex 包含以下核心概念:

  • State:定义了应用的状态,类似于组件中的 data。

  • Getters:用于访问 State 中的状态,并进行计算或转换。

  • Mutations:用于修改 State 中的状态,必须是同步操作。

  • Actions:用于提交 Mutations,可以是异步操作。    

为了更好地组织项目代码,我们通常将 Vuex 的不同概念(如 state、mutations、actions、getters)写在不同的文件中,以便于维护和管理。下面是一个示例文件结构:

├── store/
│   ├── state.js
│   ├── mutations.js
│   ├── actions.js
│   ├── getters.js
│   └── index.js
└── App.vue
  • state.js 文件定义了应用的状态;
  • mutations.js 文件定义了修改状态的 mutations;
  • actions.js 文件定义了提交 mutations 的 actions;
  • getters.js 文件定义了获取状态的 getters;
  • index.js 文件则将这些文件中的内容整合到一个 Vuex 实例中,以便于在应用程序中使用。

下面是一个示例代码:

state.js

export default {count: 0
}

mutations.js

export default {increment (state) {state.count++},decrement (state) {state.count--}
}

actions.js

export default {incrementCount ({ commit }) {commit('increment')},decrementCount ({ commit }) {commit('decrement')}
}

getters.js

export default {getCount: state => state.count
}

index.js

import Vue from 'vue'
import Vuex from 'vuex'
import state from './state'
import mutations from './mutations'
import actions from './actions'
import getters from './getters'Vue.use(Vuex)export default new Vuex.Store({state,mutations,actions,getters
})

在上面的例子中,我们将不同概念分别写在了不同的文件中。最后在 index.js 中,将它们整合到一个 Vuex 实例中,并导出。然后在 Vue.js 应用程序中使用:

App.vue

<template><div><p>Count: {{ count }}</p><button @click="incrementCount">Increment</button><button @click="decrementCount">Decrement</button></div>
</template><script>
import { mapGetters, mapActions } from 'vuex'export default {computed: {...mapGetters(['getCount']),count () {return this.getCount}},methods: {...mapActions(['incrementCount','decrementCount'])}
}
</script>

在组件中,我们可以使用 mapGettersmapActions 函数来访问状态和提交 mutations。注意,我们需要将 getCount 映射到 count 计算属性中,以便在模板中使用。

我们先使用 mapState 辅助函数将 state 中的 count 映射为组件中的计算属性 count,在模板中使用 count 即可获取 state 中的 count。然后,我们使用 mapMutations 辅助函数将 increment mutations 映射为组件中的 methods 中的 increment 方法,这样,我们在 increment 方法中调用 increment mutations 即可修改 state 中的 count。最后,我们使用 mapActions 辅助函数将 incrementAsync actions 映射为组件中的 methods 中的 incrementAsync 方法,这样,我们在 incrementAsync 方法中调用 incrementAsync actions 即可异步修改 state 中的 count

http://www.lryc.cn/news/176644.html

相关文章:

  • ISO 26262 系列学习笔记 ———— ASIL定义(Automotive Safety Integration Level)
  • 代码随想录 第8章 二叉树
  • 计算机网络工程师多选题系列——计算机网络
  • Zabbix5.0_介绍_组成架构_以及和prometheus的对比_大数据环境下的监控_网络_软件_设备监控_Zabbix工作笔记001
  • Spring | 事件监听器应用与最佳实践
  • 正点原子lwIP学习笔记——NETCONN接口简介
  • PHP自动识别采集何意网址文章正文内容
  • 区块链实验室(27) - 区块链+物联网应用案例
  • NPU上PyTorch模型训练问题案例
  • 出现 conda虚拟环境默认放在C盘 解决方法
  • Ubuntu Postgresql开机自启动服务
  • COTS即Commercial Off-The-Shelf 翻译为“商用现成品或技术”或者“商用货架产品”
  • idea开发Springboot出租车管理系统VS开发mysql数据库web结构java编程计算机网页源码maven项目
  • Linux nohup
  • Linux 常见问题
  • 仕达利恩飞讯软件TPM设备管理项目正式启动,向数字化再迈一步
  • 【算法】分治法
  • Rabbit消息的可靠性
  • Java中的网络编程是什么?
  • Oracle 常用命令大全
  • Mysql 开启ssl连接
  • Java Stream流对List集合进行分页
  • Docker(二)、linux环境Docker的部署以及构建镜像
  • GEE错误——Image.select: Pattern ‘MDF‘ did not match any bands
  • 前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— JS基础(四)
  • mysql超级聚合with rollup
  • 浅谈电动汽车充电桩设计与应用研究
  • tensorflow Windows安装说明
  • 【Leetcode热题】打卡 day11——20(更新至11)
  • linux使用操作[3]