搜尋

首頁  >  問答  >  主體

Vuejs/Nuxtjs中的watch無法監聽來自Vuex Store中的物件陣列的變化

我正在使用Vuejs/Nuxtjs 在此應用程式中開發一個應用程序,我有一個元件IdentifiersNode.vue ,我想在其中監視Vuex 儲存數組 identifiersArray

我可以觀察identifiersArray 的直接更改,例如push、直接鍵值更改,但是當我向identifiersArray 中的物件新增物件時, watch 將因�

P粉063039990P粉063039990281 天前489

全部回覆(2)我來回復

  • P粉846294303

    P粉8462943032024-03-27 12:25:54

    如果您使用 vuex,我建議使用 mapGetters 從商店取得您的商品。這將自動監視值並在每次項目變更時重新渲染。

    這裡是文檔:文檔

    #小例子

    商店

    import Vue from "vue";
    import Vuex from "vuex";
    
    Vue.use(Vuex);
    
    const state = {
      data: ["Hello", "world"]
    };
    
    const mutations = {
      addItem(state, item) {
        state.data.push(item);
      }
    };
    
    const getters = {
      getData: (state) => state.data
    };
    
    export default new Vuex.Store({
      state,
      mutations,
      actions,
      getters
    })
    

    元件

    
    
    sssccc
    
    

    以下是一個 codepen 作為範例: https://codesandbox.io/s/vuex-store-forked-bl9rk0?file=/src/components/HelloWorld.vue

    如果您�%B

    回覆
    0
  • P粉561323975

    P粉5613239752024-03-27 00:58:34

    提供答案可能對未來的其他人有所幫助。

    我實際上是將物件附加到 Vuex Store 中陣列中的現有物件中。因此,手錶無法辨識變化。我將其更改為 vue.set 這對我有用。

    以前我使用附加到現有物件:

    identifiersNode.instanceData = payload.instanceData

    後來我改為:

    // Use the Vue reactive approach to add the instanceData object to existing object
    Vue.set(identifiersNode, 'instanceData', payload.instanceData)

    以下是我在Vue組件�%B

    回覆
    0
  • 取消回覆