Vue.js [vuex]ミューテーションからディスパッチする方法は?

ステファン-v:

jsonオブジェクトに適用したいフィルターのリストがあります。

私の突然変異は次のようになります:

const mutations = {
    setStars(state, payload) {
        state.stars = payload;
        this.dispatch('filter');
    },

    setReviews(state, payload) {
        state.reviews = payload;
        this.dispatch('filter');
    }
};

フィルターがどのように機能するかを考えると、ユーザーがフィルターオプションの選択を解除すると問題が発生するため、リストをダウンフィルターし続けることができないため、フィルターをすべて再適用する必要があります。

したがって、スターフィルターまたはレビューフィルターに変更が加えられている場合(ユーザーがフィルターしている場合)、すべてのフィルターを実行する関数を呼び出す必要があります。

ここで私の最も簡単なオプションは何ですか?何らかのヘルパー関数を追加したり、結果を実際にフィルター処理するミューテーションを呼び出すアクションを設定したりできますか?

マット:

突然変異はそれ以上のアクションをディスパッチできませんが、アクションは他のアクションをディスパッチできます。したがって、1つのオプションは、アクションに変更をコミットさせてから、フィルターアクションをトリガーすることです。

別のオプションは、可能であれば、getters計算されたプロパティのようにデータの変更に自然に反応するすべてのフィルターを使用することです。

他のアクションを呼び出すアクションの例:

// store.js
export default {
  mutations: {
    setReviews(state, payload) {
      state.reviews = payload
    }
  }

  actions: {
    filter() {
      // ...
    }

    setReviews({ dispatch, commit }, payload) {
      commit('setReviews', payload)
      dispatch('filter');
    }
  }
}


// Component.vue
import { mapActions } from 'vuex';

export default {
  methods: {
    ...mapActions(['setReviews']),
    foo() {
      this.setReviews(...)
    }
  }
}

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Vue.js-Vuexストアのミューテーション内からルーターを制御します

分類Dev

Vue.js:Vuexの状態プロパティのデータはどのくらい永続的ですか?

分類Dev

Vue.js:データプロパティから<br>要素を表示する方法

分類Dev

Vue.jsで配列プロパティのサブセクションをページ分割する方法は?

分類Dev

Vue.js配列は、ミューテーションで更新すると消えます

分類Dev

[Vue.js2] Vueのディープウォッチでデバウンスを使用する方法

分類Dev

vue、jsパグテンプレートからデータを参照する方法は?

分類Dev

Vue.js作成またはマウントされたフックでミューテーションを呼び出す方法は?

分類Dev

Vuexを使用してVue.jsの計算されたプロパティでウォッチャーからデータ変数が更新されない

分類Dev

Vue.JSとRails-UJS / Jquery-UJSの競合-Vuexミューテーションが機能しない

分類Dev

Vue.jsでユーザーにApolloミューテーションエラーを表示しますか?

分類Dev

vue jsアプリからlaravelのローカルパブリックディスクにファイルをアップロードする方法は?

分類Dev

Webpackerのvuexミューテーションテストでvue.esm.jsをインポートできません

分類Dev

明確化再:Vue.jsアクション/ミューテーション

分類Dev

vue-devtoolsからvueイベントとvuexミューテーションを除外することは可能ですか?

分類Dev

ポップアップからvue.jsアプリケーションにデータを中継する方法

分類Dev

TypeScriptベースのVueのチェックボックスコンポーネントプロパティにvuexの状態とミューテーションをバインドします

分類Dev

Vue.jsを使用してあるリストから別のリストに移動するtodoをアニメーション化する方法は?

分類Dev

vue DevToolsにvuexミューテーションを自動的にコミットさせるにはどうすればよいですか?

分類Dev

fabric.jsイベントハンドラーからアクションをディスパッチしようとすると、「リデューサーはアクションをディスパッチできない可能性があります」という原因になります。

分類Dev

Vue.jsでセッションCookieベースの認証を実装する方法は?

分類Dev

Vue js ルーティング url ハッシュタグを削除します。

分類Dev

ロールのチャンネルからパーミッションを削除する方法-discord.js?

分類Dev

index.htmlからVue.js3インスタンスにメッセージを送信する方法は?

分類Dev

階層全体にイベントのチェーンを持たずに、vue.jsで任意にネストされた子コンポーネントからプロパティを変更することは可能ですか?

分類Dev

vue.jsフィルターからvueインスタンスを返す(Vue.js 2)

分類Dev

Vue JSデータから別のデータに値を取得する方法は?

分類Dev

Vue.jsメソッドから計算されたプロパティを変更する方法は?

分類Dev

Vue.js:「親」Vueからデータを取得する

Related 関連記事

  1. 1

    Vue.js-Vuexストアのミューテーション内からルーターを制御します

  2. 2

    Vue.js:Vuexの状態プロパティのデータはどのくらい永続的ですか?

  3. 3

    Vue.js:データプロパティから<br>要素を表示する方法

  4. 4

    Vue.jsで配列プロパティのサブセクションをページ分割する方法は?

  5. 5

    Vue.js配列は、ミューテーションで更新すると消えます

  6. 6

    [Vue.js2] Vueのディープウォッチでデバウンスを使用する方法

  7. 7

    vue、jsパグテンプレートからデータを参照する方法は?

  8. 8

    Vue.js作成またはマウントされたフックでミューテーションを呼び出す方法は?

  9. 9

    Vuexを使用してVue.jsの計算されたプロパティでウォッチャーからデータ変数が更新されない

  10. 10

    Vue.JSとRails-UJS / Jquery-UJSの競合-Vuexミューテーションが機能しない

  11. 11

    Vue.jsでユーザーにApolloミューテーションエラーを表示しますか?

  12. 12

    vue jsアプリからlaravelのローカルパブリックディスクにファイルをアップロードする方法は?

  13. 13

    Webpackerのvuexミューテーションテストでvue.esm.jsをインポートできません

  14. 14

    明確化再:Vue.jsアクション/ミューテーション

  15. 15

    vue-devtoolsからvueイベントとvuexミューテーションを除外することは可能ですか?

  16. 16

    ポップアップからvue.jsアプリケーションにデータを中継する方法

  17. 17

    TypeScriptベースのVueのチェックボックスコンポーネントプロパティにvuexの状態とミューテーションをバインドします

  18. 18

    Vue.jsを使用してあるリストから別のリストに移動するtodoをアニメーション化する方法は?

  19. 19

    vue DevToolsにvuexミューテーションを自動的にコミットさせるにはどうすればよいですか?

  20. 20

    fabric.jsイベントハンドラーからアクションをディスパッチしようとすると、「リデューサーはアクションをディスパッチできない可能性があります」という原因になります。

  21. 21

    Vue.jsでセッションCookieベースの認証を実装する方法は?

  22. 22

    Vue js ルーティング url ハッシュタグを削除します。

  23. 23

    ロールのチャンネルからパーミッションを削除する方法-discord.js?

  24. 24

    index.htmlからVue.js3インスタンスにメッセージを送信する方法は?

  25. 25

    階層全体にイベントのチェーンを持たずに、vue.jsで任意にネストされた子コンポーネントからプロパティを変更することは可能ですか?

  26. 26

    vue.jsフィルターからvueインスタンスを返す(Vue.js 2)

  27. 27

    Vue JSデータから別のデータに値を取得する方法は?

  28. 28

    Vue.jsメソッドから計算されたプロパティを変更する方法は?

  29. 29

    Vue.js:「親」Vueからデータを取得する

ホットタグ

アーカイブ