我已经使用 Vue 一段时间了,我的经验一直是,如果更新其底层反应性数据,方法将重新计算。我在 SO 上遇到了相互矛盾的信息:
我搜索了文档,但没有看到任何非常清楚的内容。
如果他们不是反应性的,那么为什么这个例子有效?
<ul>
<li v-for="animal in animals" :key="animal.id">
<span v-if="isAwesome(animal)">{{ animal.name }}</span>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
export default {
data() {
return {
awesomeAnimalIds: [],
animals: [
{ id: 1, name: 'dog' },
{ id: 5, name: 'cat' },
{ id: 9, name: 'fish' },
],
};
},
created() {
setTimeout(() => {
this.awesomeAnimalIds.push(5);
}, 1000);
setTimeout(() => {
this.awesomeAnimalIds.push(9);
}, 2000);
},
methods: {
isAwesome(animal) {
return this.awesomeAnimalIds.includes(animal.id);
},
}, …Run Code Online (Sandbox Code Playgroud) vue.js ×1