关于Vue在面试中常常被提到的几点(持续更新……)
1、Vue项目中为什么要在列表组件中写key,作用是什么?
我们在业务组件中,会经常使用循环列表,当时用v-for命令时,会在后面写上:key,那么为什么建议写呢?
key的作用是更新组件时判断两个节点是否相同。相同则复用,不相同就删除旧的创建新的。正是因为带唯一key时每次更新都不能找到可复用的节点,不但要销毁和创建节点,在DOM中还要添加移除节点,对性能的影响更大。所以才说,当不带key时,性能可能会更好。
因为不带key时,节点会复用(复用是因为Vue使用了Diff算法),省去了销毁或创建节点的开销,同时只需要修改DOM文本内容而不是移除或添加节点。既然如此,为什么我们还要建议带key呢?因为这种不带key的模式只适合渲染简单的无状态的组件。对于大多数场景来说,列表都得必须有自己的状态。避免组件复用引起的错误。
带上key虽然会增加开销,但是对于用户来说基本感受不到差距,为了保证组件状态正确,避免组件复用,这就是为什么建议使用key。
2、Vue的双向绑定,Model如何改变View,View又是如何改变Model的?
我们先看一幅图,下面一幅图就是Vue双向绑定的原理图。
第一步,使数据对象变得“可观测”
我们要知道数据在什么时候被读或写了。
let person = {
‘name’: ‘maomin’,
‘age’: 23
}
let val = ‘maomin’;
Object.defineProperty(person, ‘name’, {
get() {
console.log(‘name属性被读取了’)
return val
},
set(newVal) {
console.log(‘name属性被修改了’)
val = newVal
}
})
// person.name
// name属性被读取了
// “maomin”
// person.name=‘xqm’
// name属性被修改了
// “xqm”
更多内容请见原文,原文转载自:https://blog.csdn.net/weixin_44519496/article/details/119250932
最新文章
- android手机旋转屏幕时让GridView的列数与列宽度自适应
- day21
- mongodb安装、启动、远程连接
- Spring学习1-初识Spring
- js闭包理解实例小结
- 乐1/MACBOOK/ N1 Type-C接口新体验
- BZOJ 1052 HAOI2007 覆盖问题 二分法答案+DFS
- ios 多线程开发(二)线程管理
- jQuery插件,将内容插入到光标处
- python中的变量,运算符
- frida的用法--Hook Java代码篇
- CSS一些样式以及注意
- python---冒泡和短冒泡排序
- C++11 vector使用emplace_back代替push_back
- python练习题-day16
- Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
- css概括2
- left join不同写法导致数据差异
- [Spring Boot] Singleton and Prototype
- C++标准命名空间std
热门文章
- Java基础语法02——流程控制
- FastDFS分布式的文件系统从小白入门到企业实践打怪之路系列笔记 【运维实践】
- OpenHarmony标准设备应用开发(二)——布局、动画与音乐
- 约定编程与Sping AOP
- “浪潮杯”第九届山东省ACM大学生程序设计竞赛 F: Four-tuples容斥定理
- 2021.08.01 P3377 左偏树模板
- 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目
- 使用 Ansible 快速部署 HBase 集群
- 一文详解 FTP、FTPS 与 SFTP 的原理
- 深入了解tomcat中servlet的创建方式实现