条件、列表渲染.

#### v-for

1. 渲染列表

```vue

<template>

    <ul v-for="(item,index) in list" >

        <li>{{ item }}</li>

    </ul>

</template>

<script setup>

    import { ref } from 'vue';

    let list = ref(['苹果', '香蕉', '橙子'])

</script>

```

2. 渲染对象列表

- ![alt text](./img/image-11.png)

```vue

    <ul v-for="(item,index) in list" >

        <li>{{ item.name }} - {{ item.age }}</li>

    </ul>

```

3. 动态添加列表项

- ![alt text](./img/image-12.png)

```vue

<template>

    <input type="text" v-model="txt" placeholder="请输入内容">

    <input type="button" value="添加到列表" @click="btn">

    <ul v-for="item in list" >

        <li>{{ item}}</li>

    </ul>

</template>

<script setup>

    import { ref } from 'vue';

    let txt = ref('')

    let list = ref([])

    const btn = ()=>{

        list.value.push(txt.value)

    }

</script>

```

4. 渲染嵌套列表

- ![alt text](./img/image-13.png)

```vue

<template>

    <ul v-for="(item,index) in list" >

        <li>子数组{{index+1}}:

            <ul>

                <li>{{ item }}</li>

            </ul>

        </li>

    </ul>

</template>

<script setup>

    let list = ref([['苹果', '香蕉'], ['橙子', '葡萄']])

</script>

```

5. 分组渲染列表

- ![alt text](./img/image-14.png)

```vue

<template>

    <ul v-for="(item,index) in list">

        <h2 v-if="index === 0 || item.group !== list[index-1].group">{{ item.group }}</h2>

        <li>{{ item.name }}</li>

    </ul>

</template>

<script setup>

list.value.sort((a,b)=>a.group.localeCompare(b.group))

</script>

```

6. 分组渲染列表

- ![alt text](./img/image-15.png)

- ![alt text](./img/image-16.png)

```vue

<template>

    <input type="button" value="按名字排序" @click="btnName">

    <input type="button" value="按年龄排序" @click="btnAge">

    <ul v-for="(item,index) in list">

        <li>{{ item.name }} - {{ item.age }}</li>

    </ul>

</template>

<script setup>

import { ref } from 'vue';

let list = ref([ { name: '张三', age: 20 }, { name: '李四', age: 22 }, { name: '王五', age: 18 } ])

let btnName = ()=>{

   list.value.sort((a,b)=>a.name.localeCompare(b.name))

}

let btnAge = ()=>{

    list.value.sort((a, b) => a.age - b.age);

}

</script>

```






 

### 笔记

#### 条件渲染

1. `v-if`

- 也可在 `<template>` 上使用

    ```html

    <h1 v-if="awesome">Vue is awesome!</h1>

    <h1 v-else>Oh no 😢</h1>

    ```

- **`v-else-if` 指令**

    ```html

    <div v-if="type === 'A'">A</div>

    <div v-else-if="type === 'B'">B</div>

    <div v-else-if="type === 'C'">C</div>

    <div v-else>Not A/B/C</div>

    ```

2. `v-show`

  - 通过切换 `display` CSS 属性来显示或隐藏元素【元素始终会被渲染,只是样式被切换】

    ```html

    <h1 v-show="ok">Hello!</h1>

    ```

3. 区别

  - `v-if` 初始渲染时条件为假则不渲染任何内容。

  - `v-show` 始终渲染元素,仅切换 `display` 属性。

  - `v-if` 【切换】开销高,适合条件很少改变;`v-show` 初始渲染开销高但切换开销低,适合频繁切换


 

#### 列表渲染

- **`v-for` 指令**

  - 基于数组或对象渲染列表。

  - 需要使用 `item in items` 形式的语法,其中 `items` 是数组或对象,`item` 是迭代项的别名。

  - 支持可选的第二个参数表示当前项的位置索引。

    ```html

    <li v-for="(item, index) in items">

      {{ parentMessage }} - {{ index }} - {{ item.message }}

    </li>

    ```

- **`v-for` 与对象**

  - 支持三个参数:`value`、`key` 和 `index`。

    ```html

    <li v-for="(value, key, index) in myObject">

      {{ index }}. {{ key }}: {{ value }}

    </li>

    ```

- **`v-for` 与范围值**

  - `v-for` 可以直接接受整数值,用于重复渲染指定次数。

    ```html

    <span v-for="n in 10">{{ n }}</span>

    ```


 

- **`v-for` 与 `v-if`**

  - 建议将 `v-for` 放在 `<template>` 上,再在其内部使用 `v-if`。

    ```html

    <template v-for="todo in todos">

      <li v-if="!todo.isComplete">

        {{ todo.name }}

      </li>

    </template>

    ```

- **通过 `key` 管理状态**:帮助 Vue 跟踪节点的标识,以重用和重新排序现有元素。

    ```html

    <div v-for="item in items" :key="item.id">

      <!-- 内容 -->

    </div>

    ```


 

-  `:style` :动态样式绑定

    ```html

    <div :style="{ color: textColor, fontSize: fontSize + 'px' }">Styled Div</div>

    ```

- **`class` 绑定**

  - 使用 `:class="$attrs"` 将父组件传递的属性绑定到子组件的 `class` 上。

    ```html

    <div :class="$attrs">Class Binding</div>

    ```

- **`v-if` 与 `v-show` 的 DOM 行为**

  - `v-if` 无论 `true` 或 `false`,DOM 元素都存在,只是根据条件渲染或销毁。

  - `v-show` 使用样式控制显示与否,DOM 元素始终存在。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/77491.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

node20的安装和vue的入门准备

一、node20的安装 直接下载路径&#xff1a;https://nodejs.org/download/release/v20.11.0/node-v20.11.0-x64.msi 安装&#xff0c;双击msi文件 点击同意协议 更改下载路径 什么也不用选&#xff0c;点击next进行下一步 什么也不用选&#xff0c;点击next进行下一步 点击安…

从 Java 到 Kotlin:在现有项目中迁移的最佳实践!

全文目录&#xff1a; 开篇语 1. 为什么选择 Kotlin&#xff1f;1.1 Kotlin 与 Java 的兼容性1.2 Kotlin 的优势1.3 Kotlin 的挑战 2. Kotlin 迁移最佳实践2.1 渐进式迁移2.1.1 步骤一&#xff1a;将 Kotlin 集成到现有的构建工具中2.1.2 步骤二&#xff1a;逐步迁移2.1.3 步骤…

威雅利电子|业界领先的高隔离度用于5G基站的吸收式SPDT开关“NT1819“

业界领先的高隔离度 用于5G基站的吸收式SPDT开关"NT1819" 为了实现智能社会&#xff0c;已经启动了5G服务。这样&#xff0c;高速、低延迟、大容量的数据通信成为可能&#xff0c;也给我们的生活和工业发展带来了巨大的变化。 在5G基站有很多天线&#xff0c;每个天…

Diamond软件的使用--(6)访问FPGA的专用SPI接口

1.什么是FPGA的专用SPI接口&#xff1f; 此处的SPI FLASH接口即为FPGA的专用SPI接口&#xff0c;上电时&#xff0c;FPGA从该FLASH读出程序并运行。 2.访问SPI PROM需要注意哪些地方&#xff1f; 1&#xff09;处于MASTER SPI MODE 2&#xff09;调用USRMCLK原语&#xff0c;…

Go 语言中的 `select` 语句详解

select 是 Go 语言中处理通道(Channel)操作的一个强大控制结构&#xff0c;它允许 goroutine 同时等待多个通道操作。下面我将全面详细地解释 select 语句的各个方面。 基本语法 select 语句的基本语法如下&#xff1a; select { case <-ch1:// 如果从 ch1 成功接收数据&…

AI如何重塑CC防护行业?五大变革与实战策略解析

一、CC防护行业的技术痛点与AI的破局方向 CC攻击&#xff08;Challenge Collapsar&#xff09;作为一种以高频合法请求消耗服务器资源的DDoS攻击手段&#xff0c;传统防护技术面临三大核心挑战&#xff1a; 规则依赖性强&#xff1a;基于IP封禁或请求频率的静态规则易被绕过&a…

GPT-4o最新图像生成完全指南:10大应用场景与提示词模板

引言 OpenAI于近期推出的全新GPT-4o图像生成功能&#xff0c;代表了AI图像创作领域的重大突破。作为一个原生多模态系统&#xff0c;GPT-4o将文本理解和图像生成无缝整合&#xff0c;为创作者、教育工作者和专业人士提供了前所未有的视觉创作灵活性。本文将分享10个GPT-4o图像…

Linux驱动开发2 - 内核定时器驱动

背景 所有驱动开发都是基于全志T507&#xff08;Android 10&#xff09;进行开发&#xff0c;用于记录驱动开发过程。 简介 定时器是比较常用的一个功能&#xff0c;用来执行周期性任务。一般不太精确的定时可以用系统提供的延时函数进行。如果需要进行较为精确的延时&#…

Dify 使用 excel 或者 csv 文件创建知识库

Dify 使用 excel 或者 csv 文件创建知识库 1. 创建知识库2. 创建聊天助手3. 其他 1. 创建知识库 创建知识库&#xff0c;导入excel/csv文件&#xff0c; 文件内容&#xff0c; 单击 “预览块”&#xff0c;可以确认会生成多个键值对的块&#xff0c; 配置 Embedding 模型和检索…

23种设计模式-行为型模式之迭代器模式(Java版本)

Java 迭代器模式&#xff08;Iterator Pattern&#xff09;详解 &#x1f9e0; 什么是迭代器模式&#xff1f; 迭代器模式是一种行为型设计模式&#xff0c;它提供一种方法顺序访问一个聚合对象中的各个元素&#xff0c;而不暴露该对象的内部表示。 &#x1f3af; 使用场景 …

使用nodeJs的express+axios+cors做代理

使用nodeJs的expressaxioscors做代理 前端在请求后端时通常会遇到跨域cors问题&#xff0c;如果只在本地开发可以通过webpack或vite的proxy设置。但如果需要在线上或者其他地方绕过跨域&#xff0c;可以使用代理的方法。 1. 创建文件夹 并创建以下文件 package.json {"…

T检验、F检验及样本容量计算学习总结

目录 〇、碎语一、假设检验1.1 两种错误1.2 z检验和t检验1.3 t检验1.3.1 单样本t检验1.3.2 配对样本t检验1.3.3 独立样本t检验1.4 方差齐性检验1.4 卡方检验二、样本容量的计算2.1 AB测试主要的两种应用场景2.2 绝对量的计算公式2.3 率的计算公式参考资料〇、碎语 听到最多的检…

tensorflow使用详解

一、TensorFlow基础环境搭建 安装与验证 # 安装CPU版本 pip install tensorflow# 安装GPU版本&#xff08;需CUDA 11.x和cuDNN 8.x&#xff09; pip install tensorflow-gpu# 验证安装 python -c "import tensorflow as tf; print(tf.__version__)"核心概念 Tensor…

Redis的阻塞

Redis的阻塞 Redis的阻塞问题主要分为内在原因和外在原因两大类&#xff0c;以下从这两个维度展开分析&#xff1a; 一、内在原因 1. 不合理使用API或数据结构 Redis 慢查询 Redis 慢查询的界定 定义&#xff1a;Redis 慢查询指命令执行时间超过预设阈值&#xff08;默认 10m…

SLAM学习系列——ORB-SLAM3安装(Ubuntu20-ROS/Noetic)

ORB-SLAM3学习&#xff08;Ubuntu20-ROS&#xff09; 0 主要参考文献1 ORB-SLAM3安装环境配置1.0 前言1.0.0 关于ORB-SLAM3安装版本选择1.0.1 本文配置操作汇总(快速配置)1.0.1.1 ORB_SLAM3环境配置&#xff1a;1.0.1.2 ORB_SLAM3安装1.0.1.3 ORB_SLAM的ROS接口 1.1 C&#xff…

【应用密码学】实验二 分组密码(2)

一、实验要求与目的 1&#xff09; 学习AES密码算法原理 2&#xff09; 学习AES密码算法编程实现 二、实验内容与步骤记录&#xff08;只记录关键步骤与结果&#xff0c;可截图&#xff0c;但注意排版与图片大小&#xff09; 字符串加解密 运行python程序&#xff0c;输入…

区块链基石解码:分布式账本的运行奥秘与技术架构

区块链技术的革命性源于其核心组件——分布式账本&#xff08;Distributed Ledger&#xff09;。这一技术通过去中心化、透明性和不可篡改性&#xff0c;重塑了传统数据存储与交易验证的方式。本文将从分布式账本的核心概念、实现原理、应用场景及挑战等方面展开&#xff0c;揭…

AUTOSAR_RS_ClassicPlatformDebugTraceProfile

AUTOSAR经典平台调试、跟踪与分析支持 AUTOSAR组件调试、跟踪与分析功能详解 目录 简介ARTI核心扩展 核心特定ARTI扩展结构核心参数定义 操作系统和任务扩展 OS特定ARTI扩展任务特定ARTI扩展软件组件特定扩展 总体架构 组件结构接口定义 错误处理 默认错误跟踪器(DET) 总结 1.…

SpringBoot配置RestTemplate并理解单例模式详解

在日常开发中&#xff0c;RestTemplate 是一个非常常用的工具&#xff0c;用来发起HTTP请求。今天我们通过一个小例子&#xff0c;不仅学习如何在SpringBoot中配置RestTemplate&#xff0c;还会深入理解单例模式在Spring中的实际应用。 1. 示例代码 我们首先来看一个基础的配置…

DPIN在AI+DePIN孟买峰会阐述全球GPU生态系统的战略愿景

DPIN基金会在3月29日于印度孟买举行的AIDePIN峰会上展示了其愿景和未来5年的具体发展计划&#xff0c;旨在塑造去中心化算力的未来。本次活动汇集了DPIN、QPIN、社区成员和Web3行业资深顾问&#xff0c;深入探讨DPIN构建全球领先的去中心化GPU算力网络的战略&#xff0c;该网络…