什么是Vuex"上下文"对象?

Kob*_*obi 20 vue.js vuex vuejs2

我试图更好地理解Vuex中的"上下文"对象是什么.

所述上下文对象在Vuex文档中提及无数次.例如,在https://vuex.vuejs.org/en/actions.html中,我们有:

操作处理程序接收一个上下文对象,该对象在商店实例上公开同一组方法/属性,因此您可以调用context.commit来提交变异...

我理解如何使用它,并且我们可以使用解构,如果我们只想使用来自上下文对象的"提交",但希望更深入一点,这样我就能更好地理解发生了什么.

首先,我在"上下文对象"上发现了一对~8.5岁的帖子作为模式: 什么是上下文对象设计模式?并且 你能解释一下背景下设计模式?

但是,特别是Vuex,我希望更好地理解:

  1. 什么是上下文对象/它的目的是什么?
  2. 在Vuex中可以使用的所有属性/方法是什么?

谢谢!

ray*_*nco 18

从您指出的文档中,您可以阅读:

我们将在稍后介绍模块时看到为什么这个上下文对象不是商店实例本身.

上下文对象的主要思想是抽象当前模块的范围.如果您只是访问store.state,它将始终是根状态.

动作的上下文对象及其属性/方法在源代码中描述,并在API文档中引用

这是清单:

{
  state,      // same as store.state, or local state if in modules
  rootState,  // same as store.state, only in modules
  commit,     // same as store.commit
  dispatch,   // same as store.dispatch
  getters,    // same as store.getters, or local getters if in modules
  rootGetters // same as store.getters, only in modules
}
Run Code Online (Sandbox Code Playgroud)

  • 我只想说一个对象的快捷方式范围仅限于当前模块,这样您就不必搜索它(甚至不知道它的名称)。因此,您可以使用 `context.state` 甚至直接使用 `state` 而不是 `this.$store[moduleName].state` :) (2认同)

Dec*_*oon 5

作为一个开始,我在"上下文对象"上发现了一对~8.5岁的帖子作为模式......

我觉得你读的太多了.

我认为Vuex文档并不是指某种特定类型的"上下文对象",它在其他地方已知并定义,它们只是意味着传递给动作处理程序的对象(以及文档中描述的其他情况)是一个自定义对象,它们通过自己的定义称为"上下文"对象.

它们提供此对象的原因是因为它包含特定于该特定操作处理程序的模块的属性.

  • 关于:"我认为你读的太多了." 好澄清,谢谢!是的,我试图寻找相关的解释.绝对不想走错路.[没有讽刺,如果它在文本中以这种方式出现.] (2认同)