
v-for 呈現多筆陣列
v-for= item in peopleArr , item 為 自定義名稱,後面(peopleArr)填入要迴圈的資料
- item是表示 peopleArr 陣列中每個單一物件
 
 
- key :為帶入陣列的 key 值
 
1 2 3 4 5 6 7 8 9 10 11
   | <div id="app">  <h3>v-for 與 key</h3> <p> 人員介紹</p> <ul>   <li v-for="(item, key) in peopleArr">     {{ key }} - {{ item.name}} / {{ item.age }} 歲   </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 26 27 28 29 30
   | Vue.createApp({
    data(){      return {      peopleArr: [         {           name: 'Ken',           age: 30,           vegan: false         },         {           name: 'Wong',           page: 35,           vegan: false         },         {           name: 'Merry',           age: 60,           vegan: false         },         {           name: 'Tom',           age: 30,           vegan: true         },       ],     }   },    }).mount('#app')
  | 
 
codepen

物件迴圈
- 每個item 就是每個物件的資料
 
- key值為物件的屬性名稱
 
1 2 3 4 5 6 7 8 9 10 11 12
   | <div id="app">  <h3>v-for 與 key</h3> <p> 人員介紹</p> <ul>   <li v-for="(item, key) in peopleObj">     {{ key }} - {{ item.name}} / {{ item.age }} 歲      </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 26 27 28 29 30
   | Vue.createApp({
    data(){      return {      peopleObj:{         Salse: {            name: 'Ken',           age: 30,           vegan: false         },         Manager: {           name: 'Wong',           page: 35,           vegan: false         },         HumanResource: {           name: 'Merry',           age: 60,           vegan: false         },         Crew: {            name: 'Tom',           age: 30,           vegan: true         }       },     }   },    }).mount('#app')
  | 
 

v-for 與 key
v-for 可以使用 index 當作 key 嗎?
以六角課程為範例說明
1 2 3 4 5 6 7 8
   | <h3>v-for 與 key </h3>   <p>菜單</p>   <ul>     <li v-for="(item, key) in products">       {{ key }} - {{ item.name}} / {{ item.price }} 元       <input type="text">     </li>   </ul>
   | 
 
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 31 32 33 34
   | Vue.createApp({
    data(){     return {      products: [         {           name: '蛋餅',           price: 30,           vegan: false         },         {           name: '飯糰',           price: 35,           vegan: false         },         {           name: '小籠包',           price: 60,           vegan: false         },         {           name: '蘿蔔糕',           price: 30,           vegan: true         },       ],     },   method:{     reverseArray: function () {       this.products.reverse();     },   }   } }).mount('#app')
  | 
 

反轉之後,並沒有跟著

 
綁定key之後
1
   | <li v-for="(item, key) in products" v-bind:key='item.name'>
   | 
 
 

v-for 可以使用 index 當作 key 嗎?
索引是依照位置來判定,所以當資料的位置修改,索引值也會跟著變動,導致後續的渲染錯誤。
如果key是會變動的話,可能會導致資料的渲染錯誤
如果後端提供的資料,沒有唯一索引要如何處理?
  1.與後端溝通,為何前端要用到key的值
  2.拿到資料後,自己產生key,並放入該物件資料中
1 2 3
   | 使用v-for時,一定要用key  使用v-for時,不要拿索引當作key 請使用唯一的值當作key的值
   |