亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vuex更新視圖引發的問題怎么解決

發布時間:2022-06-15 11:50:33 來源:億速云 閱讀:138 作者:iii 欄目:開發技術

本篇內容主要講解“vuex更新視圖引發的問題怎么解決”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“vuex更新視圖引發的問題怎么解決”吧!

場景

  • 第一次進入頁面加載數據,數據不顯示,點擊某個按鈕或者切換頁面后,數據會展示出來

  • 通過分析發現,當第一次加載頁面的時候,獲取數據的數據為{} (空對象),當數據獲取完畢,執行commit()

  • 而此時通過commit()已經改變了state中的數據,在頁面中通過computed也可以獲取更新后的數據。但是視圖沒有更新,獲取的數據沒有展示出來

解決

  • 嘗試在頁面中發送commit()來再次更新視圖,無效

  • 將Vue.set(state, 'myData', data),無效

  • ......

最終方案:

代碼中所聲明的對象里面的key是動態的,所以初始只聲明了{ }。

原來,數據是數組的時候,不能通過索引直接進行賦值,也不能修改數組的長度。 而Vuex只會跟蹤在對象創建時就存在的屬性,新添加到對象上的新屬性不會觸發更新。

并且循環嵌套層級太深,視圖也可能不更新

最終,給數組對象賦值,這里轉化了一下寫法,生效。具體如下:

const store = new Vuex.Store({
  state: {
    myData: []
  },
  mutations: {
    setData(state, data) {
      // state.myData = data  不更新視圖
      Vue.set(state, 'myData', JSON.parse(JSON.stringify(data)))
    }
  },
  actions: {
    myFn () {
      store.commit('setData')
    }
  }
})

export default store

如果添加了新的對象屬性,也可以使用Object.assign(),但必須深拷貝(否則加到對象上的新屬性不會觸發更新)

let someObject = Object.assign({}, someObject, {newField: value}) // 深拷貝
// Object.assign(this.someObject, { key: 1 }) // 淺拷貝

總結

  • 不能直接去改變 store 中的狀態。改變 store 中的狀態的需要提交 (commit) mutation

  • 在組件中調用 store 中的狀態在計算屬性中返回即可獲取,也可以直接$store.state來獲取

computed: {
    myData () {
      return store.state.myData
    }
},
mounted() {
    console.log(this.store.state.myData)
}
  • 為數組添加新屬性并不會觸發視圖更新,因為vue沒有給新屬性增加get和set監聽

  • 賦值的數據,如果循環嵌套層級太深,可能會導致視圖不更新

擴展

這些方法操作數組,vue可以檢測到數據變化:

push()
pop()
shift()
unshift()
splice()
sort()
reverse()

而下面這些不會改變原數組(返回了新數組),vue檢測不到:

filter()
concat()
slice()

到此,相信大家對“vuex更新視圖引發的問題怎么解決”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临潭县| 钦州市| 隆尧县| 英德市| 区。| 汝南县| 甘谷县| 左云县| 鸡西市| 安化县| 太湖县| 无锡市| 肥乡县| 定日县| 平远县| 大同市| 水城县| 邳州市| 涪陵区| 顺义区| 浑源县| 福建省| 吴忠市| 佛教| 邓州市| 巧家县| 石河子市| 香港| 梁河县| 吉木萨尔县| 鹤庆县| 琼结县| 北流市| 平江县| 台州市| 锡林浩特市| 安阳县| 天祝| 金阳县| 全椒县| 黄骅市|