最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue綁定對象與數(shù)組變量更改后無法渲染問題解決

 更新時間:2021年09月09日 10:05:06   作者:試著奔跑的菜鳥  
這篇文章主要介紹了Vue綁定對象與數(shù)組變量更改后無法渲染問題解決,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下

項目場景:

在頁面顯示上有一個<ul>標簽,我們需要動態(tài)進行列表數(shù)據(jù)的展示,而由于我們的頁面上除了列表值,還有其他的值要進行展示,因此列表數(shù)據(jù)的數(shù)據(jù)結構是某個對象下面的數(shù)組,在動態(tài)修改數(shù)據(jù)后發(fā)現(xiàn)沒有進行自動渲染。

問題描述:

在點擊按鈕“click me!”時雖然數(shù)據(jù)有變化且在控制臺進行了輸出,但是列表數(shù)據(jù)并沒有發(fā)生渲染。
代碼如下:

<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app">
  <button @click="pushDataToDataList">click me!</button>
  <ul>
    <li v-for="(item, i) in form.dataList" :key="item">
      {{ i + ":" + item }}
    </li>
  </ul>
</div>
<script>
  let app = new Vue({
    data: function() {
      return {
        form: {}
      }
    },
    methods: {
      pushDataToDataList() {
        if (this.form.dataList == null) {
          this.form.dataList = []
        }
        this.form.dataList.push("abc" + this.form.dataList.length)
        console.log(this.form.dataList)
      }
  }
  }).$mount('#app')
</script>

chrome的控制臺顯示

原因分析:

在查閱了官方文檔后我們發(fā)現(xiàn)下面這段話

由于 JavaScript 的限制,Vue 不能檢測數(shù)組和對象的變化。盡管如此我們還是有一些辦法來回避這些限制并保證它們的響應性。

  1. 對于對象:Vue 無法檢測 property 的添加或移除。由于 Vue 會在初始化實例時對 property 執(zhí)行 getter/setter 轉化,所以 property 必須在 data對象上存在才能讓 Vue 將它轉換為響應式的。
  2. 對于數(shù)組:Vue 不能檢測以下數(shù)組的變動:
  • 當你利用索引直接設置一個數(shù)組項時,例如:vm.items[indexOfItem] = newValue
  • 當你修改數(shù)組的長度時,例如:vm.items.length = newLength

原因到這里就明了了,我們的數(shù)據(jù)沒有進行渲染是因為在一開始,data下的form中就沒有dataList這個屬性,因此在后續(xù)即使該值產(chǎn)生了變化,Vue也就無法檢測到它的改變。而且不僅僅是對數(shù)組,即使是js對象也是一樣的。除此之外,直接按下標修改數(shù)組的元素,也不會觸發(fā)視圖渲染。
會觸發(fā)數(shù)組渲染的有以下數(shù)組方法:

  • push(element) // 在數(shù)組末尾添加元素
  • pop() // 刪除數(shù)組最后一個元素并將其返回
  • shift() // 刪除數(shù)組第一個元素并將其返回
  • unshift(ele1, ele2, …, eleN) // 向數(shù)組的開頭添加一個或更多元素,并返回新的長度
  • splice(start, deleteCount?, …item) // 刪除數(shù)組中的元素并在該元素所在位置替換為新元素
  • sort() // 對數(shù)組進行排序,會修改數(shù)組元素的位置
  • reverse() // 倒轉數(shù)組元素,會修改數(shù)組元素的位置

解決方案:

1.在data下的form對象中,設置dataList屬性。由于前端在對數(shù)據(jù)進行處理時就知道代碼的結構是什么,提前設置好了也便于后續(xù)的開發(fā)理解。建議使用

data: function() {
  return {
    form: {
      dataList: null
    }
  }
}

2.使用this.$set()方法

pushDataToDataList() {
  if (this.form.dataList == null) {
    // 先在form下設置下dataList屬性
    this.$set(this.form, 'dataList', [])
  }
  this.form.dataList.push("abc" + this.form.dataList.length)
  console.log(this.form.dataList)
}

參考鏈接

Vue檢測數(shù)據(jù)變化的注意事項

到此這篇關于Vue綁定對象與數(shù)組變量更改后無法渲染問題解決的文章就介紹到這了,更多相關Vue綁定對象與數(shù)組變量更改后無法渲染問題內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 強大Vue.js組件淺析

    強大Vue.js組件淺析

    這篇文章主要為大家介紹了Vue.js組件,組件是Vue.js最強大的功能之一,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 詳解Vue webapp項目通過HBulider打包原生APP(vue+webpack+HBulider)

    詳解Vue webapp項目通過HBulider打包原生APP(vue+webpack+HBulider)

    這篇文章主要介紹了詳解Vue webapp項目通過HBulider打包原生APP(vue+webpack+HBulider),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • vue-cli的工程模板與構建工具詳解

    vue-cli的工程模板與構建工具詳解

    vue-cli提供的腳手架只是一個最基礎的,也可以說是Vue團隊認為的工程結構的一種最佳實踐。這篇文章主要介紹了vue-cli的工程模板與構建工具 ,需要的朋友可以參考下
    2018-09-09
  • vue使用H5的audio標簽問題

    vue使用H5的audio標簽問題

    這篇文章主要介紹了vue使用H5的audio標簽問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Vue keepAlive頁面強制刷新方式

    Vue keepAlive頁面強制刷新方式

    這篇文章主要介紹了Vue keepAlive頁面強制刷新方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Nuxt3:拉取項目模板失敗問題以及解決

    Nuxt3:拉取項目模板失敗問題以及解決

    文章描述了在使用官網(wǎng)命令創(chuàng)建Nuxt3項目時遇到的問題,通過分析命令,推測問題出在拉取項目模板失敗,解決方法是手動訪問并下載項目模板,解壓后按照官網(wǎng)教程安裝依賴并啟動,最終成功解決問題
    2024-12-12
  • Vue實現(xiàn)開始時間和結束時間范圍查詢

    Vue實現(xiàn)開始時間和結束時間范圍查詢

    這篇文章主要為大家詳細介紹了Vue實現(xiàn)開始時間和結束時間的范圍查詢,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Vue在 Nuxt.js 中重定向 404 頁面的方法

    Vue在 Nuxt.js 中重定向 404 頁面的方法

    這篇文章主要介紹了Vue在 Nuxt.js 中重定向 404 頁面的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • Vue3中的ref和reactive響應式原理解析

    Vue3中的ref和reactive響應式原理解析

    這篇文章主要介紹了Vue3中的ref和reactive響應式,本節(jié)主要介紹了響應式變量和對象,以及變量和對象在響應式和非響應式之間的轉換,需要的朋友可以參考下
    2022-08-08
  • 關于vue-router路徑計算問題

    關于vue-router路徑計算問題

    這篇文章主要介紹了關于vue-router路徑計算問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05

最新評論

德清县| 墨脱县| 张家界市| 恩平市| 临澧县| 德江县| 永胜县| 永昌县| 乌兰县| 甘南县| 左云县| 庄河市| 余姚市| 奉新县| 宜黄县| 任丘市| 黎城县| 大洼县| 乐东| 玛多县| 怀集县| 石棉县| 上犹县| 东乌珠穆沁旗| 阿城市| 临洮县| 宜宾市| 大安市| 昌吉市| 莱芜市| 汉沽区| 保山市| 桦川县| 阿坝县| 津南区| 海阳市| 雷山县| 视频| 莆田市| 恩平市| 安西县|