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

最新文章

  1. android手机旋转屏幕时让GridView的列数与列宽度自适应
  2. day21
  3. mongodb安装、启动、远程连接
  4. Spring学习1-初识Spring
  5. js闭包理解实例小结
  6. 乐1/MACBOOK/ N1 Type-C接口新体验
  7. BZOJ 1052 HAOI2007 覆盖问题 二分法答案+DFS
  8. ios 多线程开发(二)线程管理
  9. jQuery插件,将内容插入到光标处
  10. python中的变量,运算符
  11. frida的用法--Hook Java代码篇
  12. CSS一些样式以及注意
  13. python---冒泡和短冒泡排序
  14. C++11 vector使用emplace_back代替push_back
  15. python练习题-day16
  16. Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
  17. css概括2
  18. left join不同写法导致数据差异
  19. [Spring Boot] Singleton and Prototype
  20. C++标准命名空间std

热门文章

  1. Java基础语法02——流程控制
  2. FastDFS分布式的文件系统从小白入门到企业实践打怪之路系列笔记 【运维实践】
  3. OpenHarmony标准设备应用开发(二)——布局、动画与音乐
  4. 约定编程与Sping AOP
  5. “浪潮杯”第九届山东省ACM大学生程序设计竞赛 F: Four-tuples容斥定理
  6. 2021.08.01 P3377 左偏树模板
  7. 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目
  8. 使用 Ansible 快速部署 HBase 集群
  9. 一文详解 FTP、FTPS 与 SFTP 的原理
  10. 深入了解tomcat中servlet的创建方式实现