5.vue学习笔记(数组变化的侦测+计算属性+Class绑定)

文章目录

        • 1.数组变化的侦测
          • 1.1.变更方法
          • 1.2.替换一个数组
        • 2.计算属性
          • 计算属性缓存vs方法
        • 3.Class绑定
          • 3.1.绑定对象
          • 3.2.多个对象的绑定形式
          • 3.3.绑定数组
          • 3.4.数组与对象

1.数组变化的侦测
1.1.变更方法
vue能够侦听响应式数组的变更方法,并在它们被调用时出发相关的更新。这些变更方法包括:
push()		
pop()		
shift()		
unshift()	
splice()	
sort()		
reverse()	

在这里插入图片描述

1.2.替换一个数组
变更方法,就是会对调用它们的原数组进行变更。相对的,也有一些不可变的方法,例如:
filter()	concat()	slice()
这些不会更改原数组,而总是返回一个新数组,当遇到的是非变更方法时,我们需要将旧的数组替换为新的

在这里插入图片描述

//重新赋值后产生变换
this.names = this.names.concat("Brook");
<template>

    <h3>数组变化侦听</h3>
    <button @click="addListHandle">添加数据</button>
    <ul>
        <li v-for="(name,index) of names" :key="index">{{ name }}</li>
    </ul>
    <button @click="concatHandle">合并数组</button>
    <h3>数组1</h3>
    <p v-for="(num,index) of num1" :key="index">{{ num }}</p>
    <h3>数组2</h3>
    <p v-for="(num,index) of num2" :key="index">{{ num }}</p>

</template>

<script>

export default {
    data(){
        return{
            names: ["Tom","Bob","Lisa"],
            num1: [1,2,3,4,5],
            num2: [6,7,8,9,10]
        }
    },
    methods:{
        addListHandle(){
            //引起UI自动更新
            //this.names.push("Brook");
            //不会引起UI自动更新
            // this.names.concat("Brook");
            // console.log(this.names.concat("Brook"));
            //重新赋值后产生变换
            this.names = this.names.concat("Brook");
        },
        concatHandle(){
            this.num1 = this.num1.concat(this.num2);
        }
    }
}
</script>
2.计算属性
模板中的表达式虽然方便,但也只能用来做简单的操作,如果在模板中写太多的逻辑,会让模板变得臃肿,难以维护。
因此我们推荐使用计算属性来描述依赖响应式状态的复杂逻辑
<template>

    <h3>{{ person.name }}</h3>
    <p>{{ person.content.length > 0 ? "yes" : "no" }}</p>
</template>

<script>

export default {
    data(){
        return {
            person:{
                name: "张三",
                content: ["软件工程","Java","互联网与应用技术"]
            }
        }
    }
}
</script>

改造后

<template>

    <h3>{{ person.name }}</h3>
    <p>{{ personContent }}</p>
    <p>{{ personContent1() }}</p>
</template>

<script>

export default {
    data(){
        return {
            person:{
                name: "张三",
                content: ["软件工程","Java","互联网与应用技术"]
            }
        }
    },
    //计算属性
    computed:{
        personContent(){
            return this.person.content.length > 0 ? "yes" : "no"
        }
    },
    //放函数或者方法
    methods:{
        personContent1(){
            return this.person.content.length > 0 ? "yes" : "no"
        } 
    }
}
</script>
计算属性缓存vs方法
以上代码可以看出,计算属性和方法都能实现,那么为什么要使用计算属性:
计算属性:计算属性值会基于其响应式依赖被缓存。一个计算属性仅会在其响应式依赖更新时才会重新计算
(只要代码不变,只执行一次,多次调用的值也只执行一次)
方法:方法调用总是会在重渲染发生时再次执行函数
(方法调用几次,执行几次)
3.Class绑定
数据绑定的一个常见需求场景是操纵元素的 CSS class列表,因为class是attribute,我们可以和其他attribute一样使用v-bind将它们和动态字符串绑定。
但是,在处理比较复杂的绑定时,通过拼接生成字符串是麻烦且容易出错的。
因此,Vue专门为class的v-bind用法提供了特殊的功能增强。除了字符串外,表达式的值也可以是对象或数组
<template>

    <h3>Class样式</h3>
    <p :class="myClass">Class样式绑定</p>
</template>

<script>

export default {
    data(){
        return{
            myClass: "Demo"
        }
    }
}    
</script>
3.1.绑定对象
<template>

    <h3>Class样式</h3>
    <p :class="{ 'active':isActive,'text-danger':hasError }">Class样式绑定</p>
</template>

<script>

export default {
    data(){
        return{
            isActive: true,
            hasError: true
        }
    }
}    
</script>

<style>
.active{
    
    font-size: 30px;
}
.text-danger{
    color:red;
}

</style>
3.2.多个对象的绑定形式
<template>

    <h3>Class样式</h3>
    <p :class="ClassObject">Class样式绑定</p>
</template>

<script>

export default {
    data(){
        return{
            ClassObject:{
                active: true,
                'text-danger': true
            }
        }
    }
}    
</script>

<style>
.active{
    
    font-size: 30px;
}
.text-danger{
    color:red;
}

</style>
3.3.绑定数组
<template>

    <h3>Class样式</h3>
    <p :class="[arrActive,arrTextDanger]">Class样式绑定3</p>
</template>

<script>

export default {
    data(){
        return{
            arrActive: 'active',
            arrTextDanger: 'text-danger'
        }
    }
}    
</script>

<style>
.active{
    
    font-size: 30px;
}
.text-danger{
    color:red;
}

</style>
如果想在数组中有条件地渲染某个class,也可以使用三元运算符
<template>

    <h3>Class样式</h3>
    <p :class="[isActive ? 'active' : '']">Class样式绑定4</p>
</template>

<script>

export default {
    data(){
        return{
            isActive: true
        }
    }
}    
</script>

<style>
.active{
    
    font-size: 30px;
}
.text-danger{
    color:red;
}

</style>
3.4.数组与对象
数组和对象嵌套过程中,只能是数组嵌套对象。[{},{}]
<template>

    <h3>Class样式</h3>
    <p :class="[{'active':isActive},arrTextDanger]">Class样式绑定5</p>
    <p :class="[isActive ? 'active' : '',{'text-danger':hasError}]">Class样式绑定6</p>
</template>

<script>

export default {
    data(){
        return{
            isActive: true,
            hasError: true,
            
            arrActive: 'active',
            arrTextDanger: 'text-danger'
        }
    }
}    
</script>

<style>
.active{
    
    font-size: 30px;
}
.text-danger{
    color:red;
}

</style>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在centos7部署redis7

一、目标 在centos7.9上部署安装redis-7.2.3 二、步骤 官网 https://redis.io/download/ 1、下载合适版本的redis wget https://github.com/redis/redis/archive/7.2.3.tar.gz --no-check-certificate 如果这个链接失效&#xff0c;自行去官网找个合适的版本 2、安装redi…

【CFP-专栏2】计算机类SCI优质期刊汇总(含IEEE/Top)

一、计算机区块链类SCI-IEEE 【期刊概况】IF:4.0-5.0, JCR2区&#xff0c;中科院2区&#xff1b; 【大类学科】计算机科学&#xff1b; 【检索情况】SCI在检&#xff1b; 【录用周期】3-5个月左右录用&#xff1b; 【截稿时间】12.31截稿&#xff1b; 【接收领域】区块链…

vue的小入门

vue的快速上手 Vue概念 是一个用于构建用户界面的渐进式框架优点&#xff1a;大大提高开发效率缺点&#xff1a;需要理解记忆规则 创建Vue实例 步骤&#xff1a; 准备容器引包创建Vue实例new Vue()指定配置项el data>渲染数据 el指定挂载点&#xff0c;选择器指定控制…

【REST2SQL】03 GO读取JSON文件

REST2SQL需要一些配置信息&#xff0c;用JSON文件保存&#xff0c;比如config.json 1 创建config.json配置文件 {"hostPort":"localhost:5217","connString":"oracle://blma:5217127.0.0.1:1521/CQYH","_oracle":"ora…

linux centos使用rz、sz命令上传下载文件

一般情况下&#xff0c;我们会使用终端软件&#xff0c;如 XShell、SecureCRT 或 FinalShell 来连接远程服务器后&#xff0c;使用 rz 命令上传本地文件到远程服务器&#xff0c;再解压发版上线。 一、安转使用 系统&#xff1a;Linux CentOS 7 安装 rz 和 sz 命令 yum -y ins…

Python 学习路线:介绍、基础语法、数据结构、算法、高级主题、框架及异步编程详解

Python 介绍 Python 是一种 高级 的、解释型 的、通用 的编程语言。其设计哲学强调代码的可读性&#xff0c;使用显著的缩进。Python 是 动态类型 和 垃圾收集 的。 基本语法 设置 Python 环境并开始基础知识。 变量 变量用于存储在计算机程序中引用和操作的信息。它们还提…

leetcode第206题反转链表❤

一&#xff1a;题目&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网…

友思特分享 | CamSim相机模拟器:极大加速图像处理开发与验证过程

来源&#xff1a;友思特 机器视觉与光电 友思特分享 | CamSim相机模拟器&#xff1a;极大加速图像处理开发与验证过程 原文链接&#xff1a;https://mp.weixin.qq.com/s/IED7Y6R8WE4HmnTiRY8lvg 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; 随着图像处理技术的不断…

第二证券机构策略:股指预计维持蓄势震荡格局 关注煤炭、电力等板块

第二证券以为&#xff0c;技能面看&#xff0c;在元旦节前资金抄底推进指数收回2900整数关口&#xff0c;并向着3000点渠道压力前进。沪指在底部均线位支撑摆放较强&#xff0c;调整空间估计不大&#xff0c;在3000点渠道下方调整就是再次优化低吸的时机。操作上&#xff0c;在…

win下持续观察nvidia-smi

简介&#xff1a;在Windows操作系统中&#xff0c;没有与Linux中watch命令直接对应的内置工具&#xff0c;但有1种方法快速简单的方法可以实现类似的效果&#xff0c;尤其是用于监控类似于nvidia-smi的命令输出。 历史攻略&#xff1a; Python&#xff1a;查看windows下GPU的…

解析启动页设计的三种常见形式!

在日常生活中&#xff0c;当我们打开应用程序时&#xff0c;我们总是跳出很多页面&#xff0c;有些人说这是一个启动页面&#xff0c;有些人认为这是一个启动页面&#xff0c;有各种各样的名字。那么&#xff0c;当我们启动应用程序时&#xff0c;我们看到的页面的专业术语是什…

天翼运行高校云盘在线扩容

天翼云文档地址&#xff1a;https://www.ctyun.cn/document/10027696/10169558 1、输入 growpart命令&#xff0c;检查此云主机是否已安装growpart扩容工具。若出现图中回显信息&#xff0c;则说明已经安装&#xff0c;无需手动安装。 注意 若没有图示信息&#xff0c;请执行…

【MySQL】MySQL如何查询和筛选存储的JSON数据?

MySQL如何查询和筛选存储的JSON数据&#xff1f; 一、背景介绍二、支持的JSON数据类型三、基础数据3.1 创建表3.2 插入 JSON 数据3.3 查询 JSON 数据 四、操作函数4.1 JSON_OBJECT4.2 JSON_ARRAY4.3 JSON_EXTRACT 一、背景介绍 JSON(JavaScript Object Notation)是一种轻量级的…

【ESP32接入国产大模型之文心一言】

1. 怎样接入文心一言 随着人工智能技术的不断发展&#xff0c;自然语言处理领域也得到了广泛的关注和应用。在这个领域中&#xff0c;文心一言作为一款强大的自然语言处理工具&#xff0c;具有许多重要的应用价值。本文将重点介绍如何通过ESP32接入国产大模型之文心一言api&am…

SSM框架注解大全

先赞后看&#xff0c;养成习惯&#xff01;&#xff01;&#xff01;❤️ ❤️ ❤️ 文章码字不易&#xff0c;如果喜欢可以关注我哦&#xff01; ​如果本篇内容对你有所启发&#xff0c;欢迎访问我的个人博客了解更多内容&#xff1a;链接地址 SSM框架注解大全 三大框架注解…

【ModelScope】部署一个属于自己的AI服务

前言 技术栈是Fastapi。 FastAPI 是一个现代、快速&#xff08;基于 Starlette 和 Pydantic&#xff09;、易于使用的 Python web 框架&#xff0c;主要用于构建 RESTful API。以下是 FastAPI 的一些优势&#xff1a; 性能卓越&#xff1a; FastAPI 基于 Starlette 框架&…

第34期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大型语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以…

ElecardStreamEye使用教程(视频质量分析工具、视频分析)

文章目录 Elecard StreamEye 使用教程安装与设置下载安装 界面导航主菜单视频窗口分析窗口 文件操作打开视频文件 视频流分析帧类型识别码率分析分析报告 高级功能视觉表示比较模式自动化脚本 下载地址1&#xff1a;https://www.onlinedown.net/soft/58792.htm 下载地址2&…

又又又崩了?盘点 23 年十大线上事故!

以下文章来源于前端充电宝 &#xff0c;作者CUGGZ 2023 年&#xff0c;互联网世界日新月异&#xff0c;线上应用已成为我们生活中不可或缺的一部分。然而&#xff0c;在这一年里&#xff0c;一系列令人咋舌的线上事故频频发生。“XXX 崩了” 成为热搜常客。这些事故不仅给用户带…

从第一步开始

从新建文件到开始写代码 新建文件 创建项目步骤 选择C++ 选择存放路径,给项目起个名字 最后选择编译器 进入写代码环节 写代码 #include <iostream>using