Vue中为什么v-if和v-for不建议同时使用呢?

不懂程序的小白 小白
前端领域优质创作者
博客专家认证
2022-07-25 11:49:17
加精

一.作用

v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 true值的时候被渲染

v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in items 形式的特殊语法,其中 items 是源数据数组或者对象,而 item 则是被迭代的数组元素的别名。

在 v-for 的时候,建议设置key值,并且保证每个key值是独一无二的,这便于diff算法进行优化。

二.原因

我们都知道,在Vue2中v-for得优先级是高于v-if的,如果同时使用,那么每次渲染都会先循环再进行条件判断造成性能的浪费

三.解决办法

1.如果避免出现这种情况,则在外层嵌套template(页面渲染不生成dom节点),在这一层进行v-if判断,然后在内部进行v-for循环

<template v-if="isShow">
    <p v-for="item in items">
</template>

2.如果条件出现在循环内部,可通过计算属性computed提前过滤掉那些不需要显示的项

    computed: {
        items: function() {
          return this.list.filter(function (item) {
            return item.isShow
          })
        }
    }
    ...全文
    165 1 打赏 收藏 转发到动态 举报
    写回复
    用AI写文章
    1 条回复
    切换为时间正序
    请发表友善的回复…
    发表回复
    CSDN-Ada助手 2023-01-13
    • 打赏
    • 举报
    回复
    您可以前往 CSDN问答-前端 发布问题, 以便更快地解决您的疑问

    16

    社区成员

    发帖
    与我相关
    我的任务
    社区描述
    再疯狂的梦想,也抵不过程序员一味地坚持...
    javascriptvue.jses6 个人社区
    社区管理员
    • 木偶☜
    加入社区
    • 近7日
    • 近30日
    • 至今
    社区公告
    暂无公告

    试试用AI创作助手写篇文章吧