Axiosを使用してVuexストアからデータを取得する

Jeroen Meijer

私は自分の質問に対する可能な答えを探し回っていましたが、それ以上の提案は見つかりませんでした。

私のプロジェクトの構成は次のとおりです。activePoolオブジェクトの情報を表示するPoolMainPageがあります。中には、PoolMainPageサブページ(TeamSelectorおよびPoolStandingsに移動するオプションがあり、activePoolオブジェクトの情報も必要です

activePoolオブジェクトは、Vuexストアのエンドポイントからフェッチされます。そのためのコードは次のとおりです。

const actions = {  
  getActivePool({ commit }) {
    const config = {
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
      },
      withCredentials: true
    }
    const activePoolId = localStorage.getItem('activePoolId')
    if (activePoolId) {
      return axios.get('/pools/pool-information?poolId=' + activePoolId, config)
        .then((response) => {
          commit('SET_ACTIVE_POOL', response.data)
          return response
        })
        .catch((error) => {
          return Promise.reject(error)
        })
    } else {
      commit('SET_ACTIVE_POOL', null);
      return;
    }
  }
}

エンドポイントはその役割を果たし、activePoolオブジェクトを返します。私のPoolMainPageコンポーネント(およびサブコンポーネント)では、次のコマンドを使用して、このアクションを呼び出し、オブジェクトをフェッチします。

created() {
    if (!this.$store.getters.activePool) {
      this.$store.dispatch("getActivePool");
    }
  },

ページが更新され、activePoolがすでに設定されいるたびにエンドポイントが呼び出されないようにするためのチェックを追加しました実際にactivePoolコンポーネントにロードするために、計算されたプロパティを作成しました。

computed: {
    activePool() {
      return this.$store.getters.activePool;
    },
  },

これはすべて、エンドポイントがデータを返したときに機能しますが、その前に、activePoolオブジェクトに依存する別の計算されたプロパティでエラーが発生します。

maxToSpend() {
      return this.activePool.inGameBudget;
    },

質問1:実際に設定さmaxToSpendれるまで計算されないようにするにどうすればよいactivePoolですか?単純にチェックを追加することもできif (this.activePool) {ますが、計算されたすべてのプロパティに対してそれを行う必要があります。

質問2:これが可能かどうかはわかりませんがactivePool、エンドポイントからをフェッチし、作成した各コンポーネント内の計算されたプロパティを使用して取得するコードを追加する必要がないことを確認するにはどうすればよいですか?TeamSelectorおよびPoolStandings

すべてのヘルプ/提案は大歓迎です!不明な点がある場合や追加情報が必要な場合はお知らせください。

ありがとう!

ジェロエン

ユーザー28

activePoolが実際に設定されるまでmaxToSpendが計算されないようにするにはどうすればよいですか?

基本的にそれはできません。計算されたプロパティは、コンポーネントの作成直後に計算されます。ライフサイクル図を参照してください。計算されたプロパティは、初期注入と反応性状態で計算されます。

if(this.activePool){の場合、追加のチェックを追加するだけで済みますが、計算されたすべてのプロパティに対してそれを行う必要があります。

ゲッターを使用する場合

state: {
  ...
},
getters: {
  maxToSpend: state => {
    if (!state.activePool) return
    return state.activePool.inGameBudget
  }
},
actions: {
  ...
}

次に、次のように使用できます。

computed: {
  maxToSpend () {
    return this.$store.getters.maxToSpend
  }
}

これが可能かどうかはわかりませんが、エンドポイントからactivePoolをフェッチし、作成した各コンポーネント内の計算プロパティを使用して取得するコードを追加する必要がないことを確認するにはどうすればよいですか:TeamSelectorとPoolStandings?

基本的にはありません。ただし、TeamSelectorとPoolStandingsの両方に共通の親(PoolMainPageである可能性があります)がある場合は、その親から1回だけ呼び出すことができます。

私の意見では、必要なすべてのページに必須のアクションを明示的にディスパッチする方法は悪い考えではありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

axiosを使用してvuexのAPIからデータを取得する方法は?

分類Dev

ルートの使用中にvuexストアから特定のデータを取得する

分類Dev

Axiosを使用してReactjsでApiからデータを取得する

分類Dev

ストアドプロシージャを使用してSQLServerからデータを取得する方法

分類Dev

Pythonを使用してxhrリクエストからデータを取得する

分類Dev

Pythonを使用してcurlリクエストからデータを取得する

分類Dev

Newtonsoft.Jsonを使用してSteamストアAPIからデータを取得する

分類Dev

IDを使用してデータベースからデータを取得する

分類Dev

ComponentDidMountを使用してデータベースからデータを取得する

分類Dev

ajaxを使用してデータベースからデータを取得する

分類Dev

Laravelを使用してデータベースからデータを取得する

分類Dev

Gulpを使用してデータベースからデータを取得する

分類Dev

Scrapy Xpathを使用してスクリプトタグからデータを取得し、CSVとして使用する

分類Dev

シェルスクリプトを使用してHerokuPostgresデータベースからデータを取得する

分類Dev

タイトルを使用してデータベースcodeigniterからデータを取得する

分類Dev

SQLステートメントを使用して以下のデータからデータを取得する方法

分類Dev

HttpClientを使用してWindowsストアアプリのWebサイトからデータを取得します

分類Dev

Flask(python)を使用してGAEデータストアから画像を提供する

分類Dev

Hibernateテンプレートを使用してデータベースからデータを取得する方法

分類Dev

jspを使用してリストからデータにアクセスする

分類Dev

データベースからデータを取得してJFreechartで使用する

分類Dev

文字列配列のセットを使用してデータベースからデータを取得する方法

分類Dev

VbネットのFor句を使用してデータベースmysqlからデータを取得する方法

分類Dev

Vuexを使用してデータベースから状態を最初にロードするタイミング

分類Dev

ストアドプロシージャを使用してデータベースからデータを取得する

分類Dev

curlphpを使用してネストされたJSONデータからデータを取得する

分類Dev

axios.getからReduxストアにリクエストデータを取得する方法

分類Dev

axiosとVue.jsを使用してスプレッドシートデータをJSONとして取得する

分類Dev

axiosから取得することにより、react機能コンポーネントを使用してuseStateのデータを取得する方法

Related 関連記事

  1. 1

    axiosを使用してvuexのAPIからデータを取得する方法は?

  2. 2

    ルートの使用中にvuexストアから特定のデータを取得する

  3. 3

    Axiosを使用してReactjsでApiからデータを取得する

  4. 4

    ストアドプロシージャを使用してSQLServerからデータを取得する方法

  5. 5

    Pythonを使用してxhrリクエストからデータを取得する

  6. 6

    Pythonを使用してcurlリクエストからデータを取得する

  7. 7

    Newtonsoft.Jsonを使用してSteamストアAPIからデータを取得する

  8. 8

    IDを使用してデータベースからデータを取得する

  9. 9

    ComponentDidMountを使用してデータベースからデータを取得する

  10. 10

    ajaxを使用してデータベースからデータを取得する

  11. 11

    Laravelを使用してデータベースからデータを取得する

  12. 12

    Gulpを使用してデータベースからデータを取得する

  13. 13

    Scrapy Xpathを使用してスクリプトタグからデータを取得し、CSVとして使用する

  14. 14

    シェルスクリプトを使用してHerokuPostgresデータベースからデータを取得する

  15. 15

    タイトルを使用してデータベースcodeigniterからデータを取得する

  16. 16

    SQLステートメントを使用して以下のデータからデータを取得する方法

  17. 17

    HttpClientを使用してWindowsストアアプリのWebサイトからデータを取得します

  18. 18

    Flask(python)を使用してGAEデータストアから画像を提供する

  19. 19

    Hibernateテンプレートを使用してデータベースからデータを取得する方法

  20. 20

    jspを使用してリストからデータにアクセスする

  21. 21

    データベースからデータを取得してJFreechartで使用する

  22. 22

    文字列配列のセットを使用してデータベースからデータを取得する方法

  23. 23

    VbネットのFor句を使用してデータベースmysqlからデータを取得する方法

  24. 24

    Vuexを使用してデータベースから状態を最初にロードするタイミング

  25. 25

    ストアドプロシージャを使用してデータベースからデータを取得する

  26. 26

    curlphpを使用してネストされたJSONデータからデータを取得する

  27. 27

    axios.getからReduxストアにリクエストデータを取得する方法

  28. 28

    axiosとVue.jsを使用してスプレッドシートデータをJSONとして取得する

  29. 29

    axiosから取得することにより、react機能コンポーネントを使用してuseStateのデータを取得する方法

ホットタグ

アーカイブ