最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)VUE3教程:Vue 3.0 列表渲染

#用 v-for 把一個數(shù)組對應為一組元素

我們可以用 v-for 指令基于一個數(shù)組來渲染一個列表。v-for 指令需要使用 item in items 形式的特殊語法,其中 items 是源數(shù)據(jù)數(shù)組,而 item 則是被迭代的數(shù)組元素的別名。

  • {{ item.message }}

Vue.createApp({
  data() {
    return {
      items: [{ message: 'Foo' }, { message: 'Bar' }]
    }
  }
}).mount('#array-rendering')

結果: 點擊此處實現(xiàn)

v-for 塊中,我們可以訪問所有父作用域的 property。v-for 還支持一個可選的第二個參數(shù),即當前項的索引。

  • {{ parentMessage }} - {{ index }} - {{ item.message }}

Vue.createApp({
  data() {
    return {
      parentMessage: 'Parent',
      items: [{ message: 'Foo' }, { message: 'Bar' }]
    }
  }
}).mount('#array-with-index')

結果: 點擊此處實現(xiàn)

你也可以用 of 替代 in 作為分隔符,因為它更接近 JavaScript 迭代器的語法:

#在 v-for 里使用對象

你也可以用 v-for 來遍歷一個對象的 property。

  • {{ value }}

Vue.createApp({
  data() {
    return {
      myObject: {
        title: 'How to do lists in Vue',
        author: 'Jane Doe',
        publishedAt: '2016-04-10'
      }
    }
  }
}).mount('#v-for-object')

結果: 點擊此處實現(xiàn)

你也可以提供第二個的參數(shù)為 property 名稱 (也就是鍵名 key):

  • {{ name }}: {{ value }}
  • 點擊此處實現(xiàn)

    還可以用第三個參數(shù)作為索引:

  • {{ index }}. {{ name }}: {{ value }}
  • 點擊此處實現(xiàn)

    提示

    在遍歷對象時,會按 Object.keys() 的結果遍歷,但是不能保證它在不同 JavaScript 引擎下的結果都一致。

    #維護狀態(tài)

    當 Vue 正在更新使用 v-for 渲染的元素列表時,它默認使用“就地更新”的策略。如果數(shù)據(jù)項的順序被改變,Vue 將不會移動 DOM 元素來匹配數(shù)據(jù)項的順序,而是就地更新每個元素,并且確保它們在每個索引位置正確渲染。

    這個默認的模式是高效的,但是只適用于不依賴子組件狀態(tài)或臨時 DOM 狀態(tài) (例如:表單輸入值) 的列表渲染輸出

    為了給 Vue 一個提示,以便它能跟蹤每個節(jié)點的身份,從而重用和重新排序現(xiàn)有元素,你需要為每項提供一個唯一 key attribute:

    建議盡可能在使用 v-for 時提供 key attribute,除非遍歷輸出的 DOM 內(nèi)容非常簡單,或者是刻意依賴默認行為以獲取性能上的提升。

    因為它是 Vue 識別節(jié)點的一個通用機制,key 并不僅與 v-for 特別關聯(lián)。后面我們將在指南中看到,它還具有其它用途。

    提示

    不要使用對象或數(shù)組之類的非基本類型值作為 v-for 的 key。請用字符串或數(shù)值類型的值。

    更多 key attribute 的細節(jié)用法請移步至 key 的 API 文檔。

    #數(shù)組更新檢測

    #變更方法

    Vue 將被偵聽的數(shù)組的變更方法進行了包裹,所以它們也將會觸發(fā)視圖更新。這些被包裹過的方法包括:

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

    你可以打開控制臺,然后對前面例子的 items 數(shù)組嘗試調(diào)用變更方法。比如 example1.items.push({ message: 'Baz' })。

    #替換數(shù)組

    變更方法,顧名思義,會變更調(diào)用了這些方法的原始數(shù)組。相比之下,也有非變更方法,例如 filter()concat()slice()。它們不會變更原始數(shù)組,而總是返回一個新數(shù)組。當使用非變更方法時,可以用新數(shù)組替換舊數(shù)組:

    example1.items = example1.items.filter(item => item.message.match(/Foo/))

    你可能認為這將導致 Vue 丟棄現(xiàn)有 DOM 并重新渲染整個列表。幸運的是,事實并非如此。Vue 為了使得 DOM 元素得到最大范圍的重用而實現(xiàn)了一些智能的啟發(fā)式方法,所以用一個含有相同元素的數(shù)組去替換原來的數(shù)組是非常高效的操作。

    #顯示過濾/排序后的結果

    有時,我們想要顯示一個數(shù)組經(jīng)過過濾或排序后的版本,而不實際變更或重置原始數(shù)據(jù)。在這種情況下,可以創(chuàng)建一個計算屬性,來返回過濾或排序后的數(shù)組。

    例如:

  • {{ n }}
  • data() {
      return {
        numbers: [ 1, 2, 3, 4, 5 ]
      }
    },
    computed: {
      evenNumbers() {
        return this.numbers.filter(number => number % 2 === 0)
      }
    }

    在計算屬性不適用的情況下 (例如,在嵌套 v-for 循環(huán)中) 你可以使用一個方法:

    • {{ n }}

    data() {
      return {
        sets: [[ 1, 2, 3, 4, 5 ], [6, 7, 8, 9, 10]]
      }
    },
    methods: {
      even(numbers) {
        return numbers.filter(number => number % 2 === 0)
      }
    }

    #在 v-for 里使用值的范圍

    v-for 也可以接受整數(shù)。在這種情況下,它會把模板重復對應次數(shù)。

    {{ n }}

    結果: 點擊此處實現(xiàn)

    #在