v-if 和 v-for 的一些疑问

来源:3-4 vue基本知识点串讲-part2

一爿

2020-11-13

<!--
  问题一:这种情况下,假如循环20次,v-if是判断20次还是1次?
  data: {
    flag: false,
    listObj: {
      a: {title: '1'},
      b: {title: '2'},
      c: {title: '3'},
      d: {title: '4'}
    }
  }
-->
<li v-for="(value, key, index) in listObj" :key="key">
  <span v-if="flag">{{value.title}}</span>
</li>

<!--
  问题二,这种情况下,假如循环20次,v-if我认为是判断20次,
  可以如果是判断20次,这种写法是不是和 v-for v-if写在一起一样了?
  data: {
    listObj: {
      a: {title: '1', flag: false},
      b: {title: '2', flag: true},
      c: {title: '3', flag: true},
      d: {title: '4', flag: false}
    }
  }
-->
<li v-for="(value, key, index) in listObj" :key="key">
  <span v-if="value.flag">{{value.title}}</span>
</li>
写回答

1回答

双越

2020-11-13

这就跟用 js 写嵌套的 if 和 for 一样。你试着把它翻译成 js 代码,看能翻译过来吗?

0
2
双越
回复
一爿
“只改变v-if所在的元素” —— 这就扯到了 diff 算法了。 跟你题目里问的“执行多少次”没有关系。
2020-11-15
共2条回复

2024版 前端框架及项目面试 聚焦Vue3/React/Webpack

面向1-3年前端的框架及项目面试“刚需内容”

4663 学习 · 1644 问题

查看课程