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

在 `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。这种方式使得组件能够更加简洁地与全局状态进行交互,同时保持了响应式数据的更新。

相关文章:

  • XCVU47P-2FSVH2892E Xilinx Virtex UltraScale+ FPGA AMD
  • 华为OD机试_2025 B卷_判断一组不等式是否满足约束并输出最大差(Python,100分)(附详细解题思路)
  • 网站并发访问量达到1万以上需要注意哪些事项
  • 【DCS开源项目】—— Lua 如何调用 DLL、DLL 与 DCS World 的交互
  • 最具有实际意义价值的比赛项目
  • 数据结构——函数填空题
  • 力扣网C语言编程题:多数元素
  • 【Linux仓库】进程概念与基本操作【进程·贰】
  • Python编程语言:2025年AI浪潮下的技术统治与学习红利
  • Laravel 项目中图片上传后无法访问的问题
  • RabbitMQ 的工作流程
  • Android NDK下载链接及配置版本
  • 微服务架构的适用
  • 深入浅出JavaScript 中的代理模式:用 Proxy 掌控对象的“行为开关”
  • CTF--PhP Web解题(走入CTF)
  • [C++] STL数据结构小结
  • access和excel用vba进行辅助办公软件开发
  • c++26新功能—hive容器
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 03(题目+回答)
  • WebeServer实现:学到了哪些东西
  • 动态ip可以做网站吗/重庆网站到首页排名
  • 网站怎么做动效/班级优化大师下载安装
  • 做网站之前要备案是什么意思/网络推广的公司更可靠
  • 佛山建站模板/建立网站的主要步骤
  • 鲅鱼圈网站建设/网推平台
  • 中国万网域名登录/西安seo搜推宝