Vue.js 的几监听机制详解·侦听属性·用法直观易用适用于监听用户交互事件

Vue.js 的几种监听机制详解


一、数据监听

Vue.js 中主要有两种数据监听方式:计算属性和侦听属性。

计算属性(Computed Properties)

特点:基于响应式依赖进行缓存,只有在依赖发生变化时才重新计算。

用法:适用于需要基于其他数据计算得出的值,性能较好。

侦听属性(Watchers)

特点:在数据变化时执行指定回调函数,适用于异步操作或复杂逻辑。

用法:适用于需要在数据变化时执行异步任务或复杂逻辑的场景。

二、事件监听

Vue.js 的事件监听主要通过 v-on 指令和内置事件系统来实现。

v-on 指令

特点:用于监听 DOM 事件,常用于模板中。

用法:直观易用,适用于监听用户交互事件。

内置事件系统

特点:通过 $emit、$on 等方法在组件间通信。

用法:适用于父子组件或兄弟组件之间的通信。

三、生命周期钩子

Vue.js 提供了多个生命周期钩子函数,可以在组件的不同阶段执行特定逻辑。

生命周期钩子 特点 应用场景
beforeCreate 实例初始化之后,数据观测和事件配置之前调用。 初始化之前的逻辑,如设置默认值。
created 实例已创建完成,数据观测和事件配置已完成,但未挂载。 数据初始化、API 请求。
beforeMount 在挂载之前调用,相关的 render 函数首次被调用。 在挂载之前的逻辑,如操作 DOM。
mounted 实例已挂载到 DOM。 操作已经存在的 DOM 元素。
beforeUpdate 数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。 在数据更新之前的逻辑,如数据验证。
updated 由于数据更改,导致虚拟 DOM 重新渲染和打补丁之后调用。 在数据更新之后的逻辑,如操作 DOM。
beforeDestroy 实例销毁之前调用。 销毁之前的清理工作,如清除定时器。
destroyed 实例已销毁。 销毁之后的清理工作。

四、自定义事件

自定义事件允许我们在 Vue 组件之间进行高效的通信,特别是父子组件间的通信。

父组件监听子组件事件

特点:子组件通过 $emit 触发事件,父组件通过 v-on 监听事件。

优点:提高组件间的解耦,便于维护。

事件总线(Event Bus)

特点:通过 Vue 实例作为事件总线,实现跨组件通信。

优点:适用于兄弟组件或较复杂的组件树结构中的通信。

Vue.js 提供了多种监听数据变化和用户交互的机制,包括数据监听、事件监听、生命周期钩子和自定义事件。这些机制不仅丰富了 Vue.js 的功能,也使得开发者能够更灵活地处理各种交互和数据更新需求。