interview
vue-basics
在 Vue 事件中传入 event使用 e.target 和 e.currentTarget 有什么区别

Vue 基础面试题, 在 Vue 事件中传入 $event,使用 e.target 和 e.currentTarget 有什么区别?

Vue 基础面试题, 在 Vue 事件中传入 $event,使用 e.target 和 e.currentTarget 有什么区别?

QA

Step 1

Q:: 在 Vue 事件中,传入 $event 时,使用 e.target 和 e.currentTarget 有什么区别?

A:: e.target 是指触发事件的最深层的元素,而 e.currentTarget 是指事件绑定的元素。e.target 可能是事件触发路径中的任意元素,而 e.currentTarget 总是当前事件处理函数附加到的元素。在 Vue 中使用 e.target 可以获取事件触发的具体元素,而 e.currentTarget 通常用于控制事件处理函数作用的范围。

Step 2

Q:: 在 Vue 中如何处理事件代理?

A:: 在 Vue 中,可以通过在父元素上使用 v-on 绑定事件处理函数,利用事件冒泡机制处理子元素的事件。通过 $event 参数传递事件对象,可以根据 e.target 来判断具体的子元素并执行相应的逻辑。这种方式常用于动态生成子元素的场景,减少直接在子元素上绑定事件处理函数的代码量。

Step 3

Q:: 在 Vue 中如何使用修饰符 .stop 和 .prevent?

A:: .stop 阻止事件继续传播,等同于调用 event.stopPropagation();.prevent 阻止默认事件的触发,等同于调用 event.preventDefault()。这些修饰符可以简化代码,避免在事件处理函数中手动调用对应的方法。

Step 4

Q:: 如何在 Vue 中实现自定义事件?

A:: 在 Vue 中可以通过 $emit 方法触发自定义事件,父组件通过 v-on 监听子组件发出的事件。可以在子组件中使用 this.$emit('eventName', data) 触发事件,并在父组件中使用 <Child @eventName='handler' /> 绑定事件处理函数。

用途

在实际生产环境中,理解 e`.target 和 e.`currentTarget 的区别至关重要,特别是在处理复杂的 DOM 结构和事件代理时。这些概念在涉及到事件冒泡、捕获,以及动态组件和表单处理时尤为重要。通过理解这些细节,开发者可以编写更高效和健壮的代码,避免常见的事件处理错误。\n

相关问题

🦆
如何在 Vue 中使用事件修饰符 .self?

.self 修饰符用于确保事件处理函数只在事件从元素自身触发时执行,避免误触发父元素的事件处理函数。这在某些需要严格控制事件作用范围的场景非常有用。

🦆
什么是 Vue 中的原生事件绑定?

使用 .native 修饰符可以在组件上绑定原生事件,而非自定义事件。这在需要直接在组件的根元素上监听事件时非常有用,例如监听外部的点击事件。

🦆
如何在 Vue 中防止事件处理函数的内存泄漏?

在 Vue 中,事件处理函数通常会自动绑定和解绑,但在手动监听或使用全局事件总线时,需确保在组件销毁前清理事件监听器,以防止内存泄漏。

🦆
Vue 中的 v-model 是如何实现的?

v-model 在内部是通过 input 或 change 事件与数据双向绑定来实现的。对于自定义组件,开发者可以通过实现自定义的 input 事件并绑定 value 属性来实现 v-model 的双向绑定功能。