思潮课程 / 前端开发 / 正文

vue非父子组件通讯, 事情总线(Event Bus)

2024-12-24前端开发 阅读 4

在Vue中,非父子组件之间的通讯能够经过以下几种办法完成:

1. 事情总线(Event Bus): 运用一个空的Vue实例作为中心事情总线(Event Bus),在组件中经过触发事情和监听事情来完成通讯。 ```javascript // eventbus.js import Vue from 'vue'; export const EventBus = new Vue;

// 在一个组件中触发事情 EventBus.$emit;

// 在另一个组件中监听事情 EventBus.$on { // 处理数据 }qwe2; ```

2. Vuex: 假如你的项目运用了Vuex,能够经过Vuex的状况办理来完成组件间的通讯。Vuex适合于大型运用,能够有效地办理状况,而且能够追寻每个状况的改动。

```javascript // store.js import Vue from 'vue'; import Vuex from 'vuex';

Vue.use;

export default new Vuex.Store { state.数据 = 新数据; } }, actions: { 更新数据 { commit; } } }qwe2;

// 在一个组件中更新状况 this.$store.dispatch;

// 在另一个组件中获取状况 this.$store.state.数据; ```

3. 供给/注入(Provide/Inject): 假如你正在构建高阶组件库,`provide` 和 `inject` 十分有用。这关于跨组件层次传递数据十分有用,特别是当子组件在组件树中嵌套很深时。

```javascript // 先人组件 export default { provide { return { 数据: '一些数据' }; } };

// 子孙组件 export default { inject: , mounted { console.log; // '一些数据' } }; ```

4. 运用大局状况办理库: 除了Vuex,还有其他大局状况办理库如MobX、Recoil等,它们也能够用于在非父子组件间同享状况。

5. 经过props和$emit组合: 假如非父子组件之间有一起的父组件,能够经过一起的父组件传递props,并运用$emit触发事情来完成通讯。

```javascript // 一起的父组件 export default { components: { 组件A, 组件B }, data { return { 数据: '初始值' }; }, methods: { 更新数据 { this.数据 = 新数据; } } };

// 组件A export default { props: , methods: { 改动数据 { this.$emit; } } };

// 组件B export default { props: , mounted { this.$emit; } }; ```

挑选哪种办法取决于你的具体需求和项目的规划。关于小型项目,事情总线或许就足够了;而关于大型运用,Vuex或其他大局状况办理库或许是更好的挑选。

Vue非父子组件通讯详解

在Vue.js结构中,组件之间的通讯是构建杂乱运用的要害。除了父子组件之间的通讯,非父子组件之间的通讯也是开发者需求把握的技能。本文将具体介绍Vue中非父子组件通讯的几种办法,协助开发者更好地了解和运用这些技能。

在Vue中,组件之间的通讯主要有以下几种办法:

1. 父传子(Props)

2. 子传父(Emit)

3. 非父子组件通讯

本文将要点讨论第三种办法,即非父子组件通讯。

事情总线(Event Bus)

事情总线是一种简略且常用的非父子组件通讯办法。它经过创立一个空的Vue实例作为中心事情总线,使得一切组件都能够经过这个实例来监听和触发事情。

完成过程

1. 创立一个事情总线实例:

```javascript

import Vue from 'vue';

export const EventBus = new Vue();

2. 在需求监听事情的组件中,运用`$on`办法来监听事情:

```javascript

EventBus.$on('eventName', (data) => {

// 处理事情

3. 在需求触发事情的组件中,运用`$emit`办法来触发事情:

```javascript

EventBus.$emit('eventName', data);

注意事项

- 事情总线适用于小型项目或组件数量较少的场景。

- 在大型项目中,运用事情总线或许会导致代码难以保护和调试。

provide

猜你喜欢

  • jquery循环遍历数组, 运用jQuery遍历数组的根本办法前端开发

    jquery循环遍历数组, 运用jQuery遍历数组的根本办法

    在jQuery中,你能够运用`.each`办法来遍历数组。`.each`办法能够用来迭代jQuery目标中的每一个元素,或许用来迭代一个一般的JavaScript数组。下面是一个简略的比如,展现怎么运用`.each`办法来遍历一个数组:``...

    2024-12-24 3
  • Vue路由嵌套, 什么是路由嵌套?前端开发

    Vue路由嵌套, 什么是路由嵌套?

    在Vue中,路由嵌套是一种常见的需求,它答应你在主路由中绵亘子路由,然后完成更杂乱的页面结构。以下是一个根本的Vue路由嵌套示例:1.首要,保证你现已装置了Vue和VueRouter。2.创立一个Vue实例,并装置VueRouter...

    2024-12-24 3
  • vue服务端烘托, 什么是Vue服务端烘托(SSR)?前端开发

    vue服务端烘托, 什么是Vue服务端烘托(SSR)?

    Vue服务端烘托(ServerSideRendering,SSR)是指服务器在接纳到恳求后,先在服务器端将Vue运用烘托成静态的HTML字符串,然后直接发送给浏览器,浏览器接纳到HTML字符串后,能够直接显现页面内容,而不需求再次恳求服...

    2024-12-24 2
  • css3有哪些新特性,h5和css3有哪些新特性前端开发

    css3有哪些新特性,h5和css3有哪些新特性

    1.挑选器:特点挑选器:如`input`。伪类挑选器:如`:hover`、`:firstchild`、`:lastchild`、`:nthchild`等。伪元素挑选器:如`::before`、`::afte...

    2024-12-24 4
  • css模块化, 什么是CSS模块化?前端开发

    css模块化, 什么是CSS模块化?

    CSS模块化是一种安排CSS代码的办法,它答应开发人员将CSS代码分割成多个独立的部分,每个部分都专心于特定的功用或组件。这种模块化的办法能够进步代码的可保护性、可重用性和可扩展性。以下是完成CSS模块化的一些要害过程和最佳实践:1.命名...

    2024-12-24 3
  • vue全家桶有哪些,中心结构前端开发

    vue全家桶有哪些,中心结构

    1.Vue.js:中心库,用于构建用户界面的渐进式JavaScript结构。2.VueRouter:官方的路由办理器,用于构建单页面运用程序(SPA)时的页面导航。3.Vuex:官方的状况办理库,用于在多个组件间同享状况。4.Vu...

    2024-12-24 1
  • html5元素,html5官网下载前端开发

    html5元素,html5官网下载

    1.``:表明页面上的独立内容,如博客帖子、新闻文章、论坛帖子等。2.``:表明文档中的一个区域或章节,一般包括一个标题。3.``:表明页面上的导航链接部分。4.``:表明页面上的侧边栏或与主要内容相关的弥补信息。5.``:表明页...

    2024-12-24 2
  • md转html, Markdown与HTML的差异前端开发

    md转html, Markdown与HTML的差异

    要将Markdown转化为HTML,您能够运用多种东西和办法。以下是几种常见的办法:1.在线转化东西:有许多免费的在线东西能够将MD转化为HTML。例如,您能够运用以下东西::一个强壮的在线Markdown修改器,支撑MD到...

    2024-12-24 2