VUE面试题-区分computed和watch的作用、概念和用法
需积分: 5 66 浏览量
更新于2024-01-26
收藏 20KB DOCX 举报
"computed: 不能有异步,只能同步 watch: 可以有异步操作
二、Vue 中组件间的通信方式
1、Props / $emit
父组件通过 props 向子组件传递数据,子组件通过 $emit 触发自定义事件通知父组件。
2、$attrs / $listeners
$attrs 包含了父作用域中不被子组件 prop 所识别 (且获取) 的特性绑定 (class和style除外)。$listeners 包含了父作用域中的 (不含 .native 修饰的) v-on 事件监听器。
3、Vuex
通过 Vuex 实现组件之间的状态管理,任何组件都可以获取全局状态,在任何组件中都可以修改全局状态。
4、Event Bus
可以通过事件总线的方式实现兄弟组件之间的通信,通过 $emit 触发事件,$on 监听事件。
5、$parent / $children
父组件可以通过 $children 直接访问所有的子组件实例,子组件可以通过 $parent 直接访问父组件实例。
6、Provide / Inject
父组件通过 provide 向子孙组件提供数据,后代组件通过 inject 注入所需的数据。
7、$refs
父组件可以通过 ref 给子组件添加引用,然后通过 this.$refs 获取子组件实例。
8、$bus
可以使用一个全局的事件总线来进行组件之间的通信。
三、Vue 中的生命周期钩子函数
1、beforeCreate
在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。
2、created
实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测 (data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。
3、beforeMount
在挂载开始之前被调用:相关的 render 函数首次被调用。
4、mounted
实例已经挂载到 DOM 上后被调用,实例的 $el 属性指向挂载的 DOM 元素。
5、beforeUpdate
数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。
6、updated
由于数据更改导致的虚拟 DOM 重新渲染和打补丁之后被调用。
7、beforeDestroy
实例销毁之前调用。在这一步,实例仍然完全可用。
8、destroyed
Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有事件监听器会被移除,所有子实例也会被销毁。
四、Vue 中的响应式原理
1、响应式对象
Vue 中的响应式对象指的是指通过 Vue 实例的 data 选项添加的属性。当这些属性的值发生变化时,视图会进行重新渲染,这就是 Vue 的响应式原理。
2、侦测变化
Vue 的响应式原理是通过 Object.defineProperty 方法实现的。当初始化 Vue 实例时,会遍历 data 对象的所有属性,使用 Object.defineProperty 将其转换为 getter 和 setter,当属性被访问时触发 getter,当属性被修改时触发 setter,从而实现对属性的侦测变化。
3、更新视图
当属性值发生变化时,会触发 setter 方法,通知 Vue 更新视图,Vue 会根据依赖收集到的 watcher,调用相应的 update 方法进行视图更新。
4、虚拟 DOM
Vue 中使用虚拟 DOM 进行高效的视图更新。当数据发生变化时,Vue 会生成新的虚拟 DOM 树,然后和旧的虚拟 DOM 树进行对比,找出发生变化的部分,最后只会对发生变化的部分进行实际的 DOM 更新,从而大大提高了性能。
五、Vue 中的指令
1、v-if
根据表达式的值的真假,切换元素的存在。
2、v-show
根据表达式的值的真假,切换元素的显示与隐藏。
3、v-for
基于数据源进行循环渲染。
4、v-bind
根据表达式,动态地绑定一个或多个属性。
5、v-model
在表单控件或组件上创建双向绑定。"
2023-03-13 上传
2022-12-27 上传
2023-02-27 上传
2023-10-22 上传
2023-02-08 上传
终究是雾散
- 粉丝: 145
- 资源: 11
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析