学习day49

computed和watch的区别

          1.computed能完成的功能,watch都可以实现

          2.watch能完成的,computed不一定能实现,例如:watch可以进行异步操作

        两个重要的小原则

          1.所被Vue管理的函数,最好写成普通函数,这样this的指向才是vm或组件实例对象

          2.所有不被Vue所管理的函数(定时器回调函数,ajax的回调函数,Promise的回调函数),最好写成箭头函数

            这样的this指向才是vm或组件实例对象

条件渲染

 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>条件渲染</title><script type="text/javascript" src="../js/vue.js"></script>
</head>
<body><div id="root"><h2>{{n}}</h2><button @click="n++">点我加一</button><!-- 用v-show作条件渲染 --><h2 v-show="false">欢迎来到{{name}}</h2><!-- 用v-if作条件渲染 --><h2 v-if="false">欢迎来到{{name}}</h2><div v-show="n===1">Angular</div><div v-show="n===2">React</div><div v-show="n===3">Vue</div></div></body>
<script type="text/javascript">Vue.config.productionTip=falseconst vm= new Vue({el:"#root",data:{name:'尚硅谷',n:0}})
</script></html>

v-for指令

          1.用于展示列表数据

          2.语法:v-for="(item,index) in xxx " :key="yyy"

          3.可遍历:数据,对象,字符串(用的少),指定次数(用的少)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>基本列表</title><script type="text/javascript" src="../js/vue.js"></script> 
</head>
<body><!-- v-for指令1.用于展示列表数据2.语法:v-for="(item,index) in xxx " :key="yyy"3.可遍历:数据,对象,字符串(用的少),指定次数(用的少)--><div id="root"><h2>人员列表</h2><ul><li v-for="p in persons" :key="p.id">{{p.name}}-{{p.age}}</li></ul><h2>汽车信息</h2><ul><li v-for="(a,b) of car">{{a}}--{{b}}</li></ul><h2>字符串</h2><ul><li v-for="(char,index) of str" :key="index">{{char}}--{{index}}</li></ul><h2>指定次数</h2><ul><li v-for="(number,index) of 5" :key="index">{{number}}--{{index}}</li></ul></div></body>
<script type="text/javascript">Vue.config.productionTip=falseconst vm = new Vue({el:'#root',data:{persons:[{id:'001',name:'张三',age:'18'},{id:'002',name:'李四',age:'19'},{id:'003',name:'王五',age:'20'}],car:{name:'奥迪A8',price:'70w',color:'黑色'},str:'hello'}})
</script>
</html>

key

面试题:react,vue中的可以有什么作用?(key的内部园路)

          1.虚拟DOM中的key的作用:

            key是虚拟DOM对象的标识,当数据发生改变时,Vue会根据【新数据】生成【新的虚拟DOM】

            随后Vue进行【新虚拟DOM】与【旧虚拟DOM】差异比较,比较规则如下

          2.对比规则

            (1)旧虚拟DOM中找到了与新虚拟DOM相同的key:

               1.若虚拟DOM中的内容没变,直接使用之前的真实DOM

               2.若虚拟DOM中内容变了,则生成新的真实DOM,随后替换页面中之前的真实DOM

           

            (2)旧虚拟DOM中未找到与新虚拟DOM相同的key

                创建新的真实DOM,随后渲染到页面

          3.用index作为key可能引发的问题

             1.若对数据进行:逆序添加,逆序删除等破坏顺序的操作:

                 会产生没有必要的真实DOM更新 ==》页面效果没问题,但效率低

             

             2.若结构中还包含输入类的DON:

                 会产生错误DOM更新==》界面更新有问题

          开发中如何选择key?:

            1.最好使用每条数据的唯一的标识作为key, 比如id, 手机号,身份证号,学号等

            2.如果不存在对数据的逆序添加,逆序删除等破坏顺序的操作,仅用于渲染列表用于战术,

              使用index作为key是没有问题的

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>:key的原理</title><script type="text/javascript" src="../js/vue.js"></script> 
</head>
<body><!-- 面试题:react,vue中的可以有什么作用?(key的内部园路)1.虚拟DOM中的key的作用:key是虚拟DOM对象的标识,当数据发生改变时,Vue会根据【新数据】生成【新的虚拟DOM】随后Vue进行【新虚拟DOM】与【旧虚拟DOM】差异比较,比较规则如下2.对比规则(1)旧虚拟DOM中找到了与新虚拟DOM相同的key:1.若虚拟DOM中的内容没变,直接使用之前的真实DOM2.若虚拟DOM中内容变了,则生成新的真实DOM,随后替换页面中之前的真实DOM(2)旧虚拟DOM中未找到与新虚拟DOM相同的key创建新的真实DOM,随后渲染到页面3.用index作为key可能引发的问题1.若对数据进行:逆序添加,逆序删除等破坏顺序的操作:会产生没有必要的真实DOM更新 ==》页面效果没问题,但效率低2.若结构中还包含输入类的DON:会产生错误DOM更新==》界面更新有问题开发中如何选择key?:1.最好使用每条数据的唯一的标识作为key, 比如id, 手机号,身份证号,学号等2.如果不存在对数据的逆序添加,逆序删除等破坏顺序的操作,仅用于渲染列表用于战术,使用index作为key是没有问题的--><div id="root"><h2>人员列表</h2><button @click.once="add">添加一个老刘</button><ul><li v-for="(p,index) of persons" :key="p.id">{{p.name}}-{{p.age}}<input type="text"></li></ul></div></body>
<script type="text/javascript">Vue.config.productionTip=falseconst vm = new Vue({el:'#root',data:{persons:[{id:'001',name:'张三',age:'18'},{id:'002',name:'李四',age:'19'},{id:'003',name:'王五',age:'20'}],},methods: {add(){const p ={id:'004',name:'老刘',age:40}this.persons.unshift(p)}},})
</script>
</html>

列表过滤,即进行一个模糊搜索的处理

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>列表过滤</title><script type="text/javascript" src="../js/vue.js"></script> 
</head>
<body><div id="root"><h2>人员列表</h2><input type="text" placeholder="请输入名字" v-model="keyWord"><ul><li v-for="(p,index) of filPersons" :key="index">{{p.name}}-{{p.age}}--{{p.sex}}</li></ul></div></body>
<script type="text/javascript">Vue.config.productionTip=false//用watch实现//#region// new Vue({//     el:'#root',//     data:{//         keyWord:'',//         persons:[//             {id:'001',name:'马冬梅',age:'18',sex:'女'},//             {id:'002',name:'周冬雨',age:'19',sex:'女'},//             {id:'003',name:'周杰伦',age:'20',sex:'男'},//             {id:'004',name:'温兆伦',age:'22',sex:'男'}//         ],  //         filPersons:[]//     },//     watch:{//         keyWord:{//             immediate:true,//             handler(val){//                 this.filPersons=this.persons.filter((p)=>{//                     return p.name.indexOf(val)!==-1//                 })//             }//         }//     }// })//#endregion//用computed实现new Vue({el:'#root',data:{keyWord:'',persons:[{id:'001',name:'马冬梅',age:'18',sex:'女'},{id:'002',name:'周冬雨',age:'19',sex:'女'},{id:'003',name:'周杰伦',age:'20',sex:'男'},{id:'004',name:'温兆伦',age:'22',sex:'男'}],  },computed:{filPersons(){return this.persons.filter((p)=>{return p.name.indexOf(this.keyWord)!==-1})}}})
</script>
</html>

列表的年龄排序问题

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>列表排序</title><script type="text/javascript" src="../js/vue.js"></script> 
</head>
<body><div id="root"><h2>人员列表</h2><input type="text" placeholder="请输入名字" v-model="keyWord"><button @click="sortType = 2">年龄升序</button><button @click="sortType = 1">年龄降序</button><button @click="sortType = 0">原顺序</button><ul><li v-for="(p,index) of filPersons" :key="index">{{p.name}}-{{p.age}}--{{p.sex}}</li></ul></div></body>
<script type="text/javascript">Vue.config.productionTip=false//用computed实现new Vue({el:'#root',data:{keyWord:'',sortType:0, //0代表原顺序,1降序,2升序persons:[{id:'001',name:'马冬梅',age:'33',sex:'女'},{id:'002',name:'周冬雨',age:'45',sex:'女'},{id:'003',name:'周杰伦',age:'12',sex:'男'},{id:'004',name:'温兆伦',age:'22',sex:'男'}],  },computed:{filPersons(){const arr= this.persons.filter((p)=>{return p.name.indexOf(this.keyWord)!==-1})//判断是否需要排序if(this.sortType){arr.sort((p1,p2)=>{return this.sortType===1?p2.age-p1.age:p1.age-p2.age})}return arr}}})
</script>
</html>

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

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

相关文章

90道渗透测试面试题(附答案)

2023年已经快过去一半了&#xff0c;不知道小伙伴们有没有找到自己心仪的工作呀。最近后台收到不少小伙伴说要我整理一些渗透测试的面试题&#xff0c;今天它来了&#xff01;觉得对你有帮助的话记得点个赞再走哦~ 1、什么是渗透测试&#xff1f; 渗透测试是一种评估计算机系统…

【MATLAB】 二维绘图,三维绘图的方法与函数

目录 MATLAB的4种二维图 1.线图 2.条形图 3.极坐标图 4.散点图 三维图和子图 1.三维曲面图 2.子图 MATLAB的4种二维图 1.线图 plot函数用来创建x和y值的简单线图 x 0:0.05:30; %从0到30&#xff0c;每隔0.05取一次值 y sin(x); plot(x,y) %若(x,y,LineWidth,2) 可…

【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现粒子场_ParticleField】

Shader"ShaderToy/ParticleField" {Properties{_iMouse("iMouse", Vector) = (0,0,0,0)}SubSha

解密动态内存管理的奥秘(含内存4个函数)

目录 一.为什么存在动态内存管理 二.动态内存函数的介绍 1. malloc函数&#xff08;memory alloc 内存开辟&#xff09; 函数介绍&#xff1a; malloc函数使用举例代码&#xff1a; 2.free&#xff08;释放&#xff09; 函数介绍&#xff1a; 代码的示例&#xff1a…

C#WinForm获取当前活动子窗体使用鼠标滚轮事件改变窗体大小

获取当前活动子窗体使用鼠标滚轮事件改变窗体大小&#xff0c;实例在文末&#xff0c;可下载。 这个主要分三个重点 第一步 我们需要让子窗体显示在父窗体中 Form22 new Form2(); Form22.TopLevel false; // 不是顶级窗体 //Form22.Parent this;// 设置父窗体 一定不要…

配置NFS服务

环境 环境 ubuntu 10.4 vm 7.1 终端 ifconfig 得到 ubuntu资料 INET ADDR 192.168.0.4 BCAST 192.168.0.255 MASK 255.255.255.0 操作前先关闭防火墙 关闭防火墙&#xff1a; 命令&#xff1a;sudo ufw disable 打开防火墙 命令&#xff1a;sudo ufw enable 配置过程 一 安…

机器人SLAM导航学习-All in one

参考引用 张虎&#xff0c;机器人SLAM导航核心技术与实战[M]. 机械工业出版社&#xff0c;2022.本博客未详尽之处可自行查阅上述书籍 一、编程基础篇 1. ROS 入门必备知识 ROS学习笔记&#xff08;文章链接汇总&#xff09; 2. C 编程范式 《21天学通C》读书笔记&#xff0…

RabbitMQ

文章目录 RabbitMQ初识MQ同步和异步通讯同步通讯异步通讯 技术对比 RabbitMq安装RabbitMQ架构RabbitMQ消息模型publisher实现consumer实现总结 SpringAMQPBasic Queue 简单队列模型WorkQueue发布/订阅FanoutDirectTopic 消息转换器 RabbitMQ 初识MQ 同步和异步通讯 微服务间…

力扣刷题SQL-197. 上升的温度---分步解题

表&#xff1a; Weather ------------------------ | Column Name | Type | ------------------------ | id | int | | recordDate | date | | temperature | int | ------------------------ id 是这个表的主键 该表包含特定日期的温度信息编…

【C语言】指针进阶(3)

目录 指针和数组笔试题解析 一维数组 字符数组 二维数组 指针笔试题 在前面两篇文章&#xff0c;我们已经学完了指针进阶的所有知识点。在这篇文章中&#xff0c;我们主要学习的是一些常见的笔试题的总结。 指针和数组笔试题解析 在做题之前&#xff0c;我们先复习一下之…

AC自动机(java)

AC自动机 AC自动机介绍代码演示 indexTree AC自动机介绍 AC自动机算法是一种基于Trie树和有限状态机的字符串匹配算法。它在查找字符串时&#xff0c;利用额外的失配指针进行回退&#xff0c;转向其他分支&#xff0c;避免重复匹配前缀&#xff0c;从而提高算法效率。当一个字典…

Docker 教程

Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。 容器是完全使用沙箱机制&a…

【CSDN竞赛】练习题(练手题)及解析(含代码+注释):小玉家的电费;饿龙咆哮-逃离城堡;收件邮箱;寻找宝藏山

订阅专栏,学习更多干货知识! 为想要参与CSDN竞赛的朋友提供几道练手题目及解决方案。含有题目描述以及不同编程语言的解决方案。 💿目录 🏮一、题目一:小玉家的电费📂1.1 题目描述📂1.2 示例代码🏮二、题目二:饿龙咆哮-逃离城堡📂2.1 题目描述📂2.2 示例代码…

什么是Redis?

什么是Redis 什么是Redis一、特性1. 支持多种数据结构2. 读/写速度快&#xff0c;性能高。3. 支持持久化。4. 实现高可用主从复制&#xff0c;主节点做数据副本。5. 实现分布式集群和高可用。 二、基本数据类型string&#xff08;字符串&#xff09;list(双向链表)set(集合)zse…

基于Java+SpringBoot+Vue前后端分离旅游网站详细设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

UE5 AI移动无动作问题

文章目录 问题背景解决方法问题背景 在使用行为树让角色移动时,出现角色行走不播放动作的情况: 解决方法 其实有2个问题导致出现这种情况 1、角色动画蓝图的问题 角色动画蓝图可能存在4个问题: ① 无播放行走动画 ② 速度的值未正常传递 ③ 播放移动动作逻辑的值判断错…

Windows Docker部署springboot微服务

Windows Docker部署springboot微服务 前言 偶然的机会让我能够实操在Windows server 2019版本的服务器上进行springCloud服务的部署 过程中深刻的体会到了为什么Docker要推荐使用Linux系列的系统进行操作 遇到的问题 springboot镜像打包微服务启动后nacos连不上使用的基础…

[SSM]手写Spring框架

目录 十一、手写Spring框架 第一步&#xff1a;创建模块myspring 第二步&#xff1a;准备好要管理的Bean 第三步&#xff1a;准备myspring.xml配置文件 第四步&#xff1a;核心接口实现 第五步&#xff1a;实例化Bean 第六步&#xff1a;给Bean属性赋值 第七步&#xff…

使用nginx和ffmpeg搭建HTTP FLV流媒体服务器(摄像头RTSP视频流->RTMP->http-flv)

名词解释 RTSP &#xff08;Real-Time Streaming Protocol&#xff09; 是一种网络协议&#xff0c;用于控制实时流媒体的传输。它是一种应用层协议&#xff0c;通常用于在客户端和流媒体服务器之间建立和控制媒体流的传输。RTSP允许客户端向服务器发送请求&#xff0c;如…

【Java基础教程】(四十二)多线程篇 · 上:多进程与多线程、并发与并行的关系,多线程的实现方式、线程流转状态、常用操作方法解析~

Java基础教程之多线程 上 &#x1f539;本节学习目标1️⃣ 线程与进程&#x1f50d;关于多进程、多线程、并发与并行之间的概念关系&#xff1f; 2️⃣ 多线程实现2.1 继承 Thread 类2.2 实现 Runnable 接口2.3 多线程两种实现方式的区别2.4 利用 Callable 接口实现多线程2.5 …