web学习笔记(六十)
shan33__ 2024-06-18 10:03:25 阅读 65
目录
1.watch监听器
2. 计算属性和watch的区别是什么?
3. vue3生命周期
4. 什么是虚拟dom?
5. 为什么在v-for循环时要绑定key?
6. 能否用V-for循环的索引做为key?
7. 组件
8. 如何使用公共组件来编写页面
1.watch监听器
在 Vue.js 中,watch
是一个用来监听数据变化并执行相应操作的功能。可以使用 watch
来监视特定的数据,当数据发生变化时执行一些逻辑。比如当输入框中内容发生改变时,在控制台实时输出对应的内容。特点:watch监听响应式数据的变化,从而触发回调函数,可以在函数内部计算结果,发送给异步请求,操作dom等内容。使用场景:实时搜索,购物车加个计算,计算动态样式。当一条数据影响多条数据的时候就需要用watch。Deep(深度监听),immediate用来判断首次是否执行。watch是深度监听,任意内部属性的变化,都会触发watch <template> <div> <input type="text" v-model="search" /> </div></template><script setup>import { ref, watch } from "vue";const search = ref("");console.log(search);watch(search, (newVal) => { console.log(newVal);}, { immediate:true//首次允许执行watch,默认watch首次是不执行的。});</script>
2. 计算属性和watch的区别是什么?
Computed内部不允许操作dom以及异步任务请求,而watch可以。他们两个都可以检测到响应式数据的变化,从动态计算结果。比如购物车总价,动态样式。计算属性必选返回一个结果,而watch没有。响应式数据变化,需要异步请求和操作dom的任务用watch。知识根据响应式数据的新值计算另一个新值(购物车总价,动态样式),用计算属性华人watch都可以完成。3. vue3生命周期
生命周期:指的是一个组件实例对象,从创建、更新、销毁的整个周期。每一个组件,包括路由组件、公共组件,只要是组件就有生命周期,在vue3中生命周期分为创建阶段、更新阶段和卸载阶段。
创建阶段:
setup入口函数:主要作用就是初始化组件响应式数据以及方法;onMounted():表示组件实例已经挂载到dom上了,页面已经完全展示出来了。此时表示组件创建阶段结束了。现在唯一的作用就是操作dom,就是页面一刷新或者是组件被卸载之后又从新创建了就要操作dom的场景。
更新阶段:
onBeforeUpdate():当响应式数据发生变化时,且没有更新dom之前执行的。(组件被卸载前执行,可以清空定时器、事件监听。)onUpdated():当响应式数据发生变化,且更行dom之后执行的。向获取数据更新后最新的dom可以在这儿获取。
卸载阶段:
当一个组件小时的时候,vue会将这个组件被卸掉,就是删除dom内容。v-if/v-show为dalse时,dom被删除了,其实就是组件被卸载了。当切换路由的时候,有一个路由组件消失就是被卸载了,有一个组件被加载了,就是被创建了。onUnmounted()用于在组件实例被卸载(销毁)时执行清理逻辑,此时组件卸载完成。
4. 什么是虚拟dom?
虚拟dom也是一个js对象,和原生dom一样,主要是为了减少dom操作而设计的。每次更新dom前都先进行新旧dom的对比,其实新旧dom的对比就是两个js对象的对比。这样对比过后vue只操作变化的dom,那么更新的dom的效率就更高了。
5. 为什么在v-for循环时要绑定key?
当循环列表“没有设置key”的时候,vue再更新dom的时候,会讲新增dom按照列表项的顺序进行对比,看数据是否发生变化。同位置的内容发生变化了,就更新dom。反之不更新。
不设置key会造成两个问题:
列表项数据会渲染异常;选中态渲染错误; 影响渲染效率,造成不必要的dom操作;
此时设置唯一的key,就能解决以上两个问题。 因为当循环列表“设置key”的时候,vue在更新dom的时候,不在按照列表项的顺序来比较dom,二十通过找相同的key值的元素进行新旧dom的对比。
6. 能否用V-for循环的索引做为key?
当元素顺序不会发生变化的时候,比如只push数据,不动态插入数据。或者只渲染商品列表、直播列表,这种纯渲染的数据列表,可以使用所以作为key。当元素顺序发生改变,动态从某个索引位置新增数据时,此时不能用索引作为key。
7. 组件
在 Vue.js 中,组件是构建用户界面的基本单元。组件可以包含自己的模板、样式和逻辑,并且可以被嵌套和复用,使得代码结构更清晰、可维护性更好。组件又分为父组件和子组件。通常在创建项目时我们会在src下创建一个componebts,然后将在页面中需要多次用到的组件单独拎出来编写一个.vue文件然后保存在该文件夹内,此处的文件作为子文件,然后再views文件夹中如果某个文件中用到了改子文件,那么这个文件就称为父文件。父组件和子组件的关系:和标签嵌套关系一样,当前组件所在的上级就是父组件,形成父子组件。类似于父子标签的关系。每个父组件在使用子组件的时候,可能希望子组件展示到数据不同,所以,父组件可以给子组件传递数据,让子组件展示。 父向子传值通过自定义prop实现;公共组件:把重复使用的一段标签封装在componts目录下,供其他路由组件复用。这种组件叫公共组件:逻辑服用、样式复用、标签结构复用。声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。