什么是Vuex“上下文”对象?

时间:2017-11-15 08:29:57

标签: vue.js vuejs2 vuex

我试图更好地理解Vuex中的“上下文”对象是什么。

在Vuex文档中多次引用 上下文对象 。例如,在https://vuex.vuejs.org/en/actions.html中,我们有:

  

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

我理解如何使用它,而且如果我们只想使用来自上下文对象的“commit”,我们可以使用解构,但希望更深入一点,只是如此我可以更好地了解发生了什么。

首先,我在“上下文对象”上发现了一对~8.5岁的帖子作为模式: what is context object design pattern?Can you explain the Context design pattern?

然而,特别是对于Vuex,我希望更好地理解:

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

3 个答案:

答案 0 :(得分:16)

从您指出的documentation,您可以阅读:

  

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

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

动作及其属性/方法的上下文对象描述为here in the source code,并在API documentation

中引用

以下是清单:

{
  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
}

答案 1 :(得分:5)

  

首先,我在“上下文对象”中发现了一对~8.5岁的帖子作为模式......

我觉得你读的太多了。

我认为Vuex文档并不是指某种特定类型的“上下文对象”,它在其他地方是已知和定义的,它们只是指传递给动作处理程序的对象(以及其他情况,如docs)是一个自定义对象,他们通过他们自己的定义将其称为“上下文”对象。

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

答案 2 :(得分:1)

vuex source code

根据vuex的源代码,上下文只是一个文字对象,具有本地的某些属性和商店的其他属性。