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

在 `setup` 函数中使用 Vuex

在这里插入图片描述

🤍 前端开发工程师、技术日更博主、已过CET6
🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1
🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》
🍚 蓝桥云课签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》

在Vue3中,结合Vuex 4(与Vue3配套的版本),可以在 setup 函数中通过 useStore 钩子来访问和操作Vuex store。

使用 useStore

import { useStore } from 'vuex';export default {
setup() {
const store = useStore();// 访问 state
const count = computed(() => store.state.count);// 提交 mutation
const increment = () => {
store.commit('increment');
};// 分发 action
const asyncIncrement = () => {
store.dispatch('asyncIncrement');
};return {
count,
increment,
asyncIncrement
};
}
};

示例

假设我们有一个Vuex store,包含一个 count state和一个 increment mutation:

// store.js
import { createStore } from 'vuex';export default createStore({
state: {
count: 0
},
mutations: {
increment(state) {
state.count++;
}
},
actions: {
asyncIncrement({ commit }) {
setTimeout(() => {
commit('increment');
}, 1000);
}
}
});

在组件中使用这个store:

<template>
<div>
<p>Count: {{ count }}</p>
<button @click="increment">Increment</button>
<button @click="asyncIncrement">Async Increment</button>
</div>
</template><script>
import { computed } from 'vue';
import { useStore } from 'vuex';export default {
setup() {
const store = useStore();const count = computed(() => store.state.count);
const increment = () => store.commit('increment');
const asyncIncrement = () => store.dispatch('asyncIncrement');return {
count,
increment,
asyncIncrement
};
}
};
</script>

注意事项

  • 确保在调用 useStore 之前已经安装并配置了Vuex。
  • 使用 computed 来响应式地访问store中的state。
  • 使用 mutations 来同步修改state,使用 actions 来处理异步逻辑。

使用模块化的 Vuex Store

如果你的store是模块化的,可以通过 store.state.moduleNamestore.commit('moduleName/mutationName') 的方式来访问和修改模块中的state和mutations。

总结

在Vue3中,通过 useStore 钩子可以很方便地在 setup 函数中访问和操作Vuex store。这种方式使得组件能够更加简洁地与全局状态进行交互,同时保持了响应式数据的更新。

http://www.xdnf.cn/news/14676.html

相关文章:

  • 通过 Lambda + API Gateway + 外部 API 实现。
  • Django数据库迁移
  • LLM:重构数字世界的“智能操作系统”
  • Java面试题025:一文深入了解数据库Redis(1)
  • Docker高级管理--容器通信技术与数据持久化
  • 【ubuntu下小工具】Crontab定时任务进行数据备份和清理
  • 【AGI】突破感知-决策边界:VLA-具身智能2.0
  • 格兰泰勒棱镜透射光强曲线优化处理
  • 嵌入式开发之嵌入式系统架构如何搭建?
  • Java ArrayList集合和HashSet集合详解
  • day38 打卡
  • 基于Python、tkinter、sqlite3 和matplotlib的校园书店管理系统
  • 多线程八股
  • Shell脚本中和||语法解析
  • tkinter Text 组件学习指南
  • 创业知识概论
  • 机器学习流量识别(pytorch+NSL-KDD+多分类建模)
  • 深入解析BERT:语言分类任务的革命性引擎
  • 5G 浪潮:发展全景、困境突围与未来航向
  • 目标检测新升级:用YOLOv8打造密度视频热力图可视化
  • Agent轻松通-P3:分析我们的Agent
  • LeetCode 680.验证回文串 II
  • PowerShell批量处理文件名称/内容的修改
  • 大模型在肺癌预测及个性化诊疗方案中的应用研究
  • Git——分布式版本控制工具
  • NVIDIA开源Fast-dLLM!解析分块KV缓存与置信度感知并行解码技术
  • android gradle的优化
  • uni-app-配合iOS App项目开发apple watch app
  • 【大模型学习】项目练习:知乎文本生成器
  • RIP路由协议实验任务八:RIPv1配置与分析