vue 使用v-for进行循环
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script src="https://cdn.jsdelivr.net/npm/vue"></script> <title>vue中使用v-for</title> </head> <body> <div id="app"> <h3>循环列表</h3> <table> <thead> <tr> <th>序号</th> <th>书名</th> <th>作者</th> </tr> </thead> <tbody> <tr v-for="(book,index) in books" :key="book.title"> <td>{{index+1}}</td> <td>{{book.title}}</td> <td>{{book.author}}</td> </tr> </tbody> </table> </div> <div id="app2"> <h3>循环对象</h3> <div v-for="(value,key) in person"> {{key}}:{{value}} </div> </div> <script> new Vue({ el: '#app', data: { books: [{ title: '水浒传', author: '施耐庵', }, { title: '三国演义', author: '罗贯中', }, { title: '西游记', author: '吴承恩', }, { title: '红楼梦', author: '曹雪芹', }, ] } }) </script> <script> new Vue({ el: '#app2', data: { person: { name: 'Xsan', age: 26, } } }) </script> </body> </html>
"(book,index) in books"是循环表达式,式中的“(book,index)”不可调换位置,对象,第二个才是索引,且索引是从0开始的,所以在下面写序号时,才会是“+1” 第一个永远为对象。
循环状态保持。默认情况下,如果数组中的顺序发生变化,或者个数发生变化导致重新渲染,那么vue会重新利用之前的元素,而不会重新排序,这样在某些情况下可能是想要的,但是绝大部分情况可能不是我们想要的,这时候可以添加key属性。可以只能够是number和str类型,那么在循环时一般使用循环出来的对象的某个唯一值,不要使用index来做key,这样虽然用了,但是没有效果。在vue2.2.x以上,在自定义组件上使用v-for,key是必须要写的。