【Vue3】v-for呈現多筆資料

Vue3

【Vue3】v-for呈現多筆資料

Vue3


v-for + 陣列資料

1
2
3
4
5
<div id="app">
  <ul>
    <li v-for="(item,key) in fruits">{{ key + 1 }} - {{item.name}}/{{ item.price }}元</li>
  </ul>
</div>

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
const fruits = [
  {
    name: "蘋果",
    price: 15,
    amount: 50
  },
  {
    name: "香蕉",
    price: 20,
    amount: 30
  },
  {
    name: "鳳梨",
    price: 35,
    amount: 100
  }
]

Vue.createApp({
  data(){
    return{
      fruits: fruits,
    }
  }
}).mount("#app");

顯示結果:

1
2
3
4
5
6
7
<div id="app">
  <ul>
    <li>1 - 蘋果/15元</li>
    <li>2 - 香蕉/20元</li>
    <li>3 - 鳳梨/35元</li>
  </ul>
</div>


v-for + 物件資料

1
2
3
4
5
<div id="app">
  <ul>
    <li v-for="(item,key) in fruits">{{ key }} - {{item.name}}/{{ item.price }}元</li>
  </ul>
</div>

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
const fruits = {
  apple:{
    name: "蘋果",
    price: 15,
    amount: 50
  },
  banana:{
    name: "香蕉",
    price: 20,
    amount: 30
  },
  pineapple:{
    name: "鳳梨",
    price: 35,
    amount: 100
  }
}

Vue.createApp({
  data(){
    return{
      fruits: fruits,
    }
  }
}).mount("#app");

顯示結果:

1
2
3
4
5
6
7
<div id="app">
  <ul>
    <li>apple - 蘋果/15元</li>
    <li>banana - 香蕉/20元</li>
    <li>pineapple - 鳳梨/35元</li>
  </ul>
</div>


v-for 純數字

1
2
3
4
5
<div id="app">
  <ul>
    <li v-for="item in 4">{{ apple }}</li>
  </ul>
</div>

1
2
3
4
5
6
7
8
Vue.createApp({
  data(){
    return{
        apple: "蘋果"
    }
  }

}).mount("#app");


v-for + key

當有相同父元素的子元素必須有獨特的key,重複的key會造成錯誤

1
2
3
4
5
6
7
8
<div id="app">
  <ul>
    <li v-for="item in fruits" v-bind:key="item.name">{{ item.name }}
      <input type="text">
    </li>
  </ul>
  <button type="button" @click="reverseArray">反轉按鈕</button>
</div>

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
const fruits = [
  {
    name: "蘋果",
    price: 15,
    amount: 50
  },
  {
    name: "香蕉",
    price: 20,
    amount: 30
  },
  {
    name: "鳳梨",
    price: 35,
    amount: 100
  }
]

Vue.createApp({
  data(){
    return{
        fruits: fruits
    }
  },
  methods:{
    reverseArray(){
      this.fruits.reverse();
    }
  }
}).mount("#app");

如果沒有加上v-bind:key="item.name",在input裡輸入值後,點擊按鈕會出錯


v-for + table + template

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<div id="app">
  <table>
    <template v-for="item in fruits">
      <tr>
        <td>{{ item.name }}</td>
      </tr>
      <tr>
        <td>{{ item.price }}元</td>
      </tr>
      <tr>
        <td>{{ item.import ? '進口':'本土' }}</td>
      </tr>
    </template>
  </table>
</div>

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
const fruits = [
  {
    name: "蘋果",
    price: 15,
    import: true
  },
  {
    name: "香蕉",
    price: 20,
    import: true
  },
  {
    name: "鳳梨",
    price: 35,
    import: false
  }
]

Vue.createApp({
  data(){
    return{
        fruits: fruits
    }
  }
}).mount("#app");

<template>可用來包覆需要重複的標籤

Vue3 

其他相關