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日

相关文章

  • vue深入解析之render function code详解

    我来为您详细讲解“Vue深入解析之Render Function Code详解”的攻略。 什么是Render Function Code? Render Function Code是指Vue中通过JavaScript编写的模板渲染函数。它可以方便地生成HTML标记,并且可以支持复杂的组件和动态渲染。Render Function Code对于深入理解Vue的…

    Vue 2023年5月28日
    00
  • Vue手写防抖和节流函数代码详解

    针对你提出的主题 “Vue手写防抖和节流函数代码详解”,我来进行详细讲解。 一、什么是防抖和节流函数 在前端开发中,很多时候会遇到一些需要节流或防抖的场景,例如在频繁进行搜索时,可以使用节流函数,减少无意义的请求;在监听窗口 resize 或滚动事件等操作时,可以使用防抖函数避免频繁执行代码。两种函数的作用如下: 防抖函数:多次触发事件后,函数只会执行一次,…

    Vue 2023年5月28日
    00
  • Vue.js实现页面后退时还原滚动位置的操作方法

    针对“Vue.js实现页面后退时还原滚动位置的操作方法”,建议从以下三个方面进行讲解: 使用Vue Router提供的钩子函数和浏览器API实现页面还原滚动位置。 使用vue-scrollto组件实现页面回到原本位置。 示例说明。 接下来我会详细讲解这三个方面的内容。 1.使用Vue Router提供的钩子函数和浏览器API实现页面还原滚动位置 Vue Ro…

    Vue 2023年5月28日
    00
  • Vue开发常用方法详解

    Vue开发常用方法详解 什么是Vue? Vue是一款流行的JavaScript框架,用于构建用户界面。它采用了MVVM(Model-View-ViewModel)设计模式,可以将页面与数据相分离,同时也可以更好地管理页面的状态。Vue的特点是易于上手,同时也提供了强大的工具,例如组件化、响应式数据和虚拟DOM等。 常用方法详解 1. 数据绑定 Vue提供了一…

    Vue 2023年5月27日
    00
  • vue项目中引入noVNC远程桌面的方法

    以下是详细讲解如何在 Vue 项目中引入 noVNC 远程桌面的方法攻略: 步骤一:安装 noVNC 首先需要安装 noVNC,可以通过命令行使用 npm 安装,具体命令如下: npm install novnc 步骤二:引入 noVNC 打开需要使用 noVNC 的组件文件,例如 Example.vue,在 <script> 标签中引入 noV…

    Vue 2023年5月28日
    00
  • Vue.js axios响应拦截如何获取返回状态码

    Vue.js 是一个流行的 JavaScript 框架,而 axios 可以让我们以简单的方式使用 AJAX 请求。在这个过程中,我们可能需要拦截 axios 响应并获取返回状态码。 为了在 Vue.js 项目中实现 axios 响应拦截器,我们需要按照以下步骤: 安装 axios 首先,我们需要安装 axios。您可以使用 npm 通过以下方式安装 axi…

    Vue 2023年5月28日
    00
  • JS实现的幻灯片切换显示效果

    当下,网站的幻灯片切换效果越来越流行,JS作为前端语言自然是实现幻灯片切换的最佳选择。下面我将详细讲解JS实现的幻灯片切换显示效果的攻略,包含如何引入JS库,如何使用JS实现切换效果等重要内容。 引入JS库 要实现幻灯片切换效果,首先要引入JS库。目前比较流行的JS库有jQuery和Zepto.js,我们可以根据项目的实际需求选择不同的库进行引入。比如我们使…

    Vue 2023年5月28日
    00
  • Vue js with语句原理及用法解析

    针对Vue js的with语句,下面是详细的攻略。 什么是with语句? with语句是一种在JavaScript中提供访问作用域内成员的方法,其使用方式通常如下所示: with(obj) { // code block } 其中,obj是一个任意JavaScript对象,而在code block中,我们可以直接访问obj对象中所包含的属性和方法,而无需通过…

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