vue bus全局事件中心简单Demo详解

Vue Bus全局事件中心简单Demo详解

什么是Vue Bus?

Vue Bus是一种在Vue应用程序中使用的全局事件总线(Event Bus),它提供了一种简单而有效的方法来管理应用程序中的组件之间的通信。

如何使用Vue Bus?

使用Vue Bus非常简单。首先,我们需要在项目中安装Vue Bus:

npm install vue-bus --save

然后,我们需要在Vue项目中引入并使用Vue Bus:

import Vue from 'vue'
import VueBus from 'vue-bus'

Vue.use(VueBus)

现在,我们可以在任何Vue组件中使用Vue Bus了。

Vue Bus的常用方法

Vue Bus提供了以下常用方法:

  • $on(event, callback):监听一个事件。
  • $once(event, callback):监听一个一次性事件。
  • $emit(event, args):触发一个事件,并传递其参数。
  • $off(event, callback):取消事件监听。

示例1:父子组件传值

下面我们演示一个简单的Vue Bus示例,用于在父组件和子组件之间传递数据。在这个例子中,我们将创建一个父组件Parent,一个子组件Child,然后在父组件中使用Vue Bus将数据传递给子组件。

<template>
  <div>
    <child-component></child-component>
  </div>
</template>

<script>
import ChildComponent from '@components/ChildComponent.vue';

export default {
  name: 'Parent',
  methods: {
    sendData(data) {
      // 触发事件,并传递数据
      this.$bus.$emit('send-data', data);
    }
  },
  components: {
    ChildComponent,
  },
};
</script>
<template>
  <div>{{ receivedData }}</div>
</template>

<script>
export default {
  name: 'ChildComponent',
  data() {
    return {
      receivedData: '',
    };
  },
  created() {
    // 监听事件,接收传递的数据
    this.$bus.$on('send-data', (data) => {
      this.receivedData = data;
    });
  },
};
</script>

在这个例子中,我们从父组件中的sendData()方法中触发一个名为 send-data 的事件,并将数据传递给子组件。在子组件中,我们使用 $bus.$on() 方法来监听事件,并接收传递的数据。

示例2:非父子组件传值

在Vue中,如果我们需要在非父子组件之间共享数据,通常会使用状态管理器(如Vuex)。但是,在某些场景下,使用Vue Bus也是一种更加方便快捷的做法。

下面我们演示一个Vue Bus在非父子组件之间传值的示例。在这个例子中,我们创建了三个组件:Sender、Receiver1和Receiver2。点击Sender组件中的按钮,将向两个接收组件分别发送不同的数据。

<template>
  <div>
    <button @click="sendData1">Send to Receiver1</button>
    <button @click="sendData2">Send to Receiver2</button>
  </div>
</template>

<script>
export default {
  name: 'Sender',
  methods: {
    sendData1() {
      // 触发事件,传递数据
      this.$bus.$emit('send-data-1', 'Data for Receiver1');
    },
    sendData2() {
      // 触发事件,传递数据
      this.$bus.$emit('send-data-2', 'Data for Receiver2');
    },
  },
};
</script>
<template>
  <div>{{ receivedData }}</div>
</template>

<script>
export default {
  name: 'Receiver1',
  data() {
    return {
      receivedData: '',
    };
  },
  created() {
    // 监听事件,接收传递的数据
    this.$bus.$on('send-data-1', (data) => {
      this.receivedData = data;
    });
  },
};
</script>
<template>
  <div>{{ receivedData }}</div>
</template>

<script>
export default {
  name: 'Receiver2',
  data() {
    return {
      receivedData: '',
    };
  },
  created() {
    // 监听事件,接收传递的数据
    this.$bus.$on('send-data-2', (data) => {
      this.receivedData = data;
    });
  },
};
</script>

在这个例子中,我们分别在Sender组件中触发了两个事件,并向两个接收组件分别传递了不同的数据。Receiver1和Receiver2组件分别监听了这两个事件,并接收了传递过来的数据。

这就是Vue Bus的简单示例说明。除此之外,Vue Bus还有更多的用法和方法,可以根据实际需求进行深入了解和使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue bus全局事件中心简单Demo详解 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 一文带你了解threejs在vue项目中的基本使用

    一文带你了解three.js在Vue项目中的基本使用 简介 three.js是一款三维图形引擎,基于WebGL和WebGL2。它可以用来创建复杂的3D场景和动画,也可用于2D渲染。 在Vue项目中使用three.js,我们需要通过npm安装three。 安装 使用如下命令安装three: npm install three 创建画布 定义Canvas: &l…

    Vue 2023年5月27日
    00
  • React DnD如何处理拖拽详解

    React DnD是封装的HTML5拖放API的React组件,可用于构建拖放交互功能。下面详细讲解React DnD如何处理拖拽,在这个过程中,将提供两个示例说明。 1. 拖拽源 拖拽源是可以被拖拽的组件。在React DnD中,拖拽源分为两种:简单的拖拽源和自定义拖拽源。 简单拖拽源 简单的拖拽源指的是一个纯组件,该组件可以设置可以被拖拽的数据类型以及数…

    Vue 2023年5月28日
    00
  • vue props 一次传多个值实例

    下面我将详细地讲解“Vue Props 一次传多个值实例”的完整攻略,内容将包含以下几个方面: Props 概述:介绍 Props 的概念和使用方式。 一次传多个值的方式:介绍如何同时传递多个 Props 值。 示例说明:提供两个示例说明,演示如何实现一次性传递多个 Props 值。 1. Props 概述 Props 是 Vue 组件通信的一种方式,它可以…

    Vue 2023年5月29日
    00
  • 浅谈在vue-cli3项目中解决动态引入图片img404的问题

    首先,出现图片404错误的原因可能有多种,但在vue-cli3项目中常见的错误是因为在引入图片时直接使用了相对路径而导致的。 解决这个问题的方法是使用require语法,在vue组件中通过require引入图片文件,再通过绑定v-bind:src动态绑定图片的路径,即可避免出现404错误。 具体的步骤如下: 下载并安装file-loader 在项目中使用re…

    Vue 2023年5月28日
    00
  • Vue首评加载速度及白屏时间优化详解

    Vue首评加载速度及白屏时间优化详解 前言 在当今互联网时代,网页的首评加载速度和白屏时间已经成为了评判网站质量和用户体验的重要指标之一。Vue作为一门专为构建交互式Web界面而设计的渐进式JavaScript框架,在进行项目开发时也需要考虑如何优化首评加载速度和白屏时间。本文旨在帮助Vue开发者做到此项优化。 背景 在进行Vue项目开发时,由于文档、组件和…

    Vue 2023年5月28日
    00
  • vue:内存泄露详解

    下面我将为您详细讲解 “vue:内存泄露详解” 的攻略。 1. 什么是内存泄漏? 内存泄漏指程序在申请内存后,由于某种原因,未能及时归还系统造成的系统内存浪费的现象。在一个程序正常的运行过程中,为了提高效率,程序会申请内存。但是程序员忘记了回收内存,或者程序代码中存在内存泄漏缺陷,导致程序在一段时间后出现卡顿或者崩溃的现象。 2. Vue中的内存泄漏 在Vu…

    Vue 2023年5月27日
    00
  • Sublime Text新建.vue模板并高亮(图文教程)

    下面我将为你详细讲解“Sublime Text新建.vue模板并高亮(图文教程)”的攻略: Sublime Text新建.vue模板并高亮(图文教程) 1. 下载Vue Syntax Highlight插件 首先,在Sublime Text中安装Vue Syntax Highlight插件。可以选择在菜单栏中选择“Preferences” -> “Pa…

    Vue 2023年5月28日
    00
  • vue使用axios上传文件(FormData)的方法

    下面是详细的Vue使用axios上传文件(FormData)的方法攻略: 1. 安装axios库 首先需要在Vue项目中安装axios库,可以通过npm命令进行安装: npm install axios –save 2. 引入axios库 在Vue的组件中引入axios库的方法如下: import axios from ‘axios’ 3. 创建FormD…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部