vue冒泡

一、什么是冒泡

冒泡是指事件的传播方式,即在DOM树结构中,当某个元素发生事件时,该事件会首先触发该元素自身的处理函数,然后事件会向该元素的父元素传递,直至传递到根元素或者事件被阻止传播。

冒泡是一种从底向上的传递方式,且是默认的传递方式。因此,Vue作为一款基于组件化的前端框架,也采用了默认的冒泡传递方式来处理组件之间的交互事件。

二、冒泡与捕获

冒泡传递方式与捕获传递方式是DOM树中两种不同的事件传播方式。冒泡传递方式是从底向上触发处理函数,而捕获传递则是从顶向下遍历DOM树,找到事件发生的元素节点并触发处理函数。

在Vue中,可以通过添加事件修饰符来控制事件的传播方式。例如,在事件名后加上”.capture”修饰符,即可实现捕获传递方式。另外,还可以通过添加”.stop”修饰符来阻止事件继续传播。


// 示例1
<div @click="handleClick">
  <button @click.stop="handleButton">Button</button>
</div>

// 示例2
<div @click.capture="handleClick">
  <button @click="handleButton">Button</button>
</div>

三、阻止默认行为

在Vue中,可以通过添加”.prevent”修饰符来阻止事件的默认行为,例如链接的跳转或表单的提交等。通过prevent修饰符,用户可以在不阻止事件传播的情况下,阻止事件的默认行为。


// 示例
<a href="www.example.com" @click.prevent="handleClick">Click me</a>

四、组件之间的事件传递

在Vue中,不同的组件之间(包括父子组件和兄弟组件)需要进行事件交互,传递数据等。Vue提供了一种自定义事件,可以在组件之间进行事件传递。

在父子组件之间,父组件可以监听子组件派发的事件。在子组件内,通过$emit方法派发自定义事件,并可以携带参数。


// 父组件
<template>
  <div>
    <Child @myEvent="handleEvent"></Child>
  </div>
</template>

<script>
import Child from './Child.vue';

export default {
  components: { Child },
  methods: {
    handleEvent(data) {
      console.log(data);
    }
  }
}
</script>

// 子组件
<template>
  <div>
    <button @click="$emit('myEvent', 'Hello, World!')">Click me</button>
  </div>
</template>


在兄弟组件之间,可以通过父组件进行事件的中转。即在父组件中定义一个事件名称,然后在需要传递事件的兄弟组件中派发该事件。父组件在监听到该事件后,再执行相应的处理逻辑。


// 父组件
<template>
  <div>
    <First @myEvent="handleMyEvent"></First>
    <Second @myEvent="handleMyEvent"></Second>
  </div>
</template>

<script>
import First from './First.vue';
import Second from './Second.vue';

export default {
  components: { First, Second },
  methods: {
    handleMyEvent(data) {
      console.log(data);
    }
  }
}
</script>

// First组件
<template>
  <div>
    <button @click="$parent.$emit('myEvent', 'Hello, World!')">Click me</button>
  </div>
</template>

// Second组件
<template>
  <div>
    <button @click="$parent.$emit('myEvent', 'Hello, Vue!')">Click me</button>
  </div>
</template>

五、总结

冒泡是事件传递的一种方式,在Vue中是默认的传递方式。除了冒泡传递方式,Vue还提供了捕获传递方式并支持事件修饰符的使用,可以方便地控制事件传递的方式。在组件之间的事件传递方面,Vue提供了自定义事件,可以方便地在不同的组件之间进行交互。

原创文章,作者:VGMIL,如若转载,请注明出处:https://www.506064.com/n/332224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
VGMILVGMIL
上一篇 2025-01-21 17:30
下一篇 2025-01-21 17:30

相关推荐

  • 使用Vue实现前端AES加密并输出为十六进制的方法

    在前端开发中,数据传输的安全性问题十分重要,其中一种保护数据安全的方式是加密。本文将会介绍如何使用Vue框架实现前端AES加密并将加密结果输出为十六进制。 一、AES加密介绍 AE…

    编程 2025-04-29
  • Vue TS工程结构用法介绍

    在本篇文章中,我们将从多个方面对Vue TS工程结构进行详细的阐述,涵盖文件结构、路由配置、组件间通讯、状态管理等内容,并给出对应的代码示例。 一、文件结构 一个好的文件结构可以极…

    编程 2025-04-29
  • Vue3的vue-resource使用教程

    本文将从以下几个方面详细阐述Vue3如何使用vue-resource。 一、安装Vue3和vue-resource 在使用vue-resource前,我们需要先安装Vue3和vue…

    编程 2025-04-27
  • Vue模拟按键按下

    本文将从以下几个方面对Vue模拟按键按下进行详细阐述: 一、Vue 模拟按键按下的场景 在前端开发中,我们常常需要模拟按键按下的场景,比如在表单中填写内容后,按下“回车键”提交表单…

    编程 2025-04-27
  • ThinkPHP6 + Vue.js: 不使用Fetch的数据请求方法

    本文将介绍如何在ThinkPHP6和Vue.js中进行数据请求,同时避免使用Fetch函数。 一、AJAX:XMLHttpRequest的基础使用 在进行数据请求时,最基础的方式就…

    编程 2025-04-27
  • 开发前端程序,Vue是否足够?

    Vue是一个轻量级,高效,渐进式的JavaScript框架,用于构建Web界面。开发人员可以使用Vue轻松完成前端编程,开发响应式应用程序。然而,当涉及到需要更大的生态系统,或利用…

    编程 2025-04-27
  • 如何在Vue中点击清除SetInterval

    在Vue中点击清除SetInterval是常见的需求之一。本文将介绍如何在Vue中进行这个操作。 一、使用setInterval和clearInterval 在Vue中,使用set…

    编程 2025-04-27
  • VueClearable:实现易于清除的Vue输入框

    一、VueClearable基本介绍 VueClearable是一个基于Vue.js开发的易于清除的输入框组件,可以在输入框中添加“清除”按钮,使得用户可以一键清空已输入内容,提升…

    编程 2025-04-25
  • Vue 往数组添加字母key

    本文将详细阐述如何在 Vue 中往数组中添加字母 key,并从多个方面探讨实现方法。 一、Vue 中添加字母 key 的实现方法 在 Vue 中,添加 key 可以使用 v-bin…

    编程 2025-04-25
  • Vue强制重新渲染组件详解

    一、Vue强制重新渲染组件是什么? Vue中的强制重新渲染组件指的是,当我们需要重新渲染组件,但是组件上的数据又没有改变时,我们可以使用强制重新渲染的方式来触发组件重新渲染。这种方…

    编程 2025-04-25

发表回复

登录后才能评论