主题
循环渲染
遍历数组
js
Arr: [
{ id: "a", title: "A" },
{ id: "b", title: "B" },
];
vue
<template>
<ul>
<li v-for="(item, index) of Arr" :key="item.id">{{ item.title }}</li>
</ul>
</template>
响应式改变
只能通过以下数组方法:push 、pop 、shift 、unshift 、splice 、sort 、reverse
指向新的引用地址
$set 方法
js/** params1: 变量 params2:第几项 params3:改变成什么 */ $set(Arr, 1, { id: "b", title: "C" });
通过下标实现改变
不
能响应式变化
遍历对象
js
Obj: {
a: {title: 'A'},
b: {title: 'B'}
}
vue
<template>
<ul>
<li v-for="(val, key, index) in Obj" :key="key">
{{ key }} —— {{ val.title }}
</li>
</ul>
</template>
响应式改变
指向新的引用地址
$set 方法
js/** params1: 变量 params2:键 params3:改变成什么 */ $set(Obj, "b", { title: "C" });
通过
.
新增不
能响应式变化
为何
v-for
中用key
diff
算法中通过tag
和key
来判断是否为同一个节点- 减少渲染次数,提升渲染性能