web-dev-qa-db-ja.com

Vuexの「コンテキスト」オブジェクトとは何ですか?

Vuexの「コンテキスト」オブジェクトについて理解を深めようとしています。

context objectは、Vuexのドキュメントで何度も参照されています。たとえば、 https://vuex.vuejs.org/en/actions.html には、次のものがあります。

アクションハンドラーは、ストアインスタンスで同じメソッド/プロパティのセットを公開するコンテキストオブジェクトを受け取るため、context.commitを呼び出して変更をコミットできます...

私はhowを使用する方法を理解しており、コンテキストオブジェクトから「コミット」のみを使用したい場合は破壊を使用することができますが、もう少し深さを望んでいました、何が起こっているのかをよりよく理解できるように。

はじめに、パターンとして「コンテキストオブジェクト」に関するカップル〜8.5年前の投稿を見つけました: コンテキストオブジェクトデザインパターンとは および コンテキストデザインパターンを説明できますか?

ただし、特にVuexについては、次のことをよりよく理解したいと思います。

  1. コンテキストオブジェクトとは何ですか/その目的は何ですか?
  2. Vuexで使用できるようにするすべてのプロパティ/メソッドは何ですか?

ありがとうございました!

19
Kobi

documentation から、あなたは以下を読むことができると指摘しました:

後でモジュールを導入するときに、このコンテキストオブジェクトがストアインスタンスそのものではない理由がわかります。

コンテキストオブジェクトの主な考え方は、現在の Module のスコープを抽象化することです。 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
}
18
rayfranco

はじめに、パターンとして「コンテキストオブジェクト」に関するカップル〜8.5歳の投稿を見つけました...

読みすぎだと思います。

私はVuexのドキュメントが他の場所で既知で定義されている特定の種類の「コンテキストオブジェクト」を参照しているとは思わず、アクションハンドラに渡されるオブジェクト(およびドキュメントで説明されている他の状況)がthey独自の定義によって「コンテキスト」オブジェクトと呼ばれるカスタムオブジェクト。

このオブジェクトを提供する理由は、その特定のアクションハンドラの モジュール に固有のプロパティが含まれているためです。

5
Decade Moon