vue.js - 如果直接获取/设置值,为什么我应该使用 getters 和 mutations 而不是?

标签 vue.js vuex

有什么区别:

this.currentLanguage = this.$store.getters.currentLanguage;

这是给 getter 的:

this.currentLanguage = this.$store.state.currentLanguage;

还有这个:

this.$store.commit('setLanguages', this.languages);

在突变中给了我相同的结果:

this.$store.state.languages = this.languages;

在这两种情况下,我都得到了我想要的。直接获取值(value)更容易,因为我不需要编写 getter/mutation。 我为什么要使用 getter/mutations?

最佳答案

在这种情况下您不需要使用 setter/getter 。 getter 就像常规 Vue 组件上的计算属性,因此只有当数据是其他数据的更复杂后代时才需要它们。

然而,你想使用突变,因为即使它看起来像 this.$store.state.languages = this.languages 正在工作,它也不一定更新它 正确。如果你有依赖于商店的其他组件,它可能不会收到新数据,因为它还没有经历完整的变异过程。

关于vue.js - 如果直接获取/设置值,为什么我应该使用 getters 和 mutations 而不是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52483142/

相关文章:

javascript - Vuejs 布局和页面组件

javascript - 在 API 错误时打破 Vuex 操作中的 promise

javascript - 如何获取所有已注册的 Vuex 模块

vue.js - 我如何在 vue 和 vuetify 中插入本地项目中的字体?

webpack - 如何在 vue.config.js 中设置用于生产的 API 路径?

javascript - 测试调用外部 api 的 Vuex 操作

javascript - Vue/Vuex - 两个或多个具有异步调度(ajax)的组件

javascript - 为什么状态不在计算中更新?

javascript - Vue.js - this.$refs.key 返回一个空数组或未定义而不是元素

javascript - 将 vue.js 与语义 UI 结合使用