Что такое объект Vuex "context"?


Я пытаюсь лучше понять, что такое объект "контекст" в Vuex.

объект контекста упоминается много раз в документации Vuex. Например, в https://vuex.vuejs.org/en/actions.html , мы имеем:

Обработчики действий получают объект контекста, который предоставляет тот же набор методы / свойства на экземпляре магазина, так что вы можете вызвать контекст.совершить, чтобы совершить мутацию...

Я понимаю. как использовать его, а также что мы можем использовать деструкцию, если мы только хотим использовать "фиксацию" из объекта контекста, но надеялись на немного большую глубину, просто чтобы я мог лучше понять, что происходит.

Для начала я нашел пару сообщений ~8,5-летней давности о "объекте контекста" в качестве шаблона: Что такое шаблон проектирования объекта контекста? и можете ли вы объяснить шаблон проектирования контекста?

Однако, специально для Vuex, я хотел бы лучше понимание:

  1. Что такое объект контекста / какова его цель?
  2. каковы все свойства / методы, которые он делает доступными для использования в Vuex?

Спасибо!

2 9

2 ответа:

Из документации , которую вы указали, вы можете прочитать:

Мы увидим, почему этот объект контекста не является самим экземпляром хранилища, когда мы представим модули позже.

Основная идея объекта контекста состоит в том, чтобы абстрагировать область действия текущего объекта. модуль. Если вы просто обращаетесь к 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
}

Для начала я нашел пару сообщений ~8,5-летней давности о "объекте контекста" в качестве шаблона ...

Я думаю, что ты слишком много читаешь.

Я не думаю, что документы Vuex ссылаются на какой-то конкретный вид "объекта контекста", который известен и определен в другом месте, они просто означают, что объект, который передается обработчикам действий (и в других ситуациях, как описано в документах), является пользовательским объектом, который они называют "контекстным" объектом по своему усмотрению. определение.

Причина, по которой они предоставляют этот объект, заключается в том, что он содержит свойства, специфичные для модуля для этого конкретного обработчика действий.