使用Vue和Vuex,我遵循了仅通过Mutations 对状态进行更改的推荐做法.因此,所有Vue组件都将通过使用一个动作来更改状态,然后该动作又会提交一个Mutations .我还在一些操作中调用API,然后根据结果更新状态.

我现在有一些API调用,它们在被调用后不需要更新状态.问题是我还应该采取行动吗?或者我应该绕过vuex,直接从组件进行这些调用?

推荐答案

使用操作的主要原因如下:

  • mutations have to be synchronous, actions can be asynchronous -> If you want to deal with asynchronous operations before a mutation, you have to use an action
  • 如果你想同时提交多个Mutations ,你可以将它们逻辑地Bundle 到一个动作中

总之,你是对的:If it is clear to you that these API calls do not alter the application's state in any way, they shouldn't be called by using actions.

直接在组件内部进行这些调用,导入包含所需函数的模块,或者如果希望在多个组件之间共享它们,则将相应的方法放入mixin中.

但是,如果您在开发过程中发现这些调用的结果应该在应用程序的多个组件之间共享,请通过操作和Mutations 将相应的逻辑移动到存储中.

Vue.js相关问答推荐

VueJS 中的 VisJS 时间轴:带有图像的项目放错了位置

Vuejs - 更新数组中对象的数组

两个div元素之间的vue2过渡

使用 Vue.js 将文件输入绑定到按钮

查找未销毁的 Vue 组件

VueJS:在组件之间使用全局对象的最佳实践?

vuejs:将props传递给javascript中的组件?

Vue 3 如何获取有关 $children 的信息

在 Vuejs 中Watch观察 window.scrollY 的变化

在 vuejs 中的图像中包含 router-link 标记

如何为 Vue 项目设置 lint-staged?

错误:vue-loader 要求 @vue/compiler-sfc 存在于依赖树中

为什么我在 vue.js 中得到避免使用 JavaScript 一元运算符作为属性名称?

Vue路由安全

Vue 3 组合 API,如何在 setup() 函数中获取上下文父属性?

如何将 git hash 添加到 Vue.js 组件

Vue如何将动态ID与v-for循环+字符串中的字段连接起来?

vue-cli-service build --target lib 导入为 lib 时丢失图像路径

如何使用vue.js/nuxt.js获取一个目录下的所有图片文件

路由使用 nuxt-i18n 在 nuxt 中推送区域设置路由