Vue3组件间的通信方式详解

Vue3组件间的通信方式详解

Vue3是一款强大的前端开发框架,它的组件化开发模式使得组件间通信成为必不可少的一部分。Vue3支持多种组件间通信方式,以满足不同场景下的需求。本文将详细讲解Vue3组件间的通信方式。

Props

Props是父组件向子组件传递数据的一种方式。在父组件中使用子组件时,通过在子组件上添加属性来向子组件传递数据。在子组件中通过props接收父组件传递的数据。示例代码如下:

父组件

<template>
  <div>
    <ChildComponent message="Hello Vue3"></ChildComponent>
  </div>
</template>
<script>
import ChildComponent from './components/ChildComponent.vue';

export default {
  name: 'ParentComponent',
  components: {
    ChildComponent
  }
}
</script>

子组件

<template>
  <div>
    <p>{{ message }}</p>
  </div>
</template>
<script>
export default {
  name: 'ChildComponent',
  props: {
    message: {
      type: String,
      default: ''
    }
  }
}
</script>

Emit

Emit是Vue3提供的一种子组件向父组件传递数据的方式。通过在子组件中使用$emit()方法触发一个自定义事件,并在父组件中使用@自定义事件名监听该事件来接收子组件传递的数据。示例代码如下:

父组件

<template>
  <div>
    <ChildComponent @sendMsg="receiveMsg"></ChildComponent>
    <p>{{ msg }}</p>
  </div>
</template>
<script>
import ChildComponent from './components/ChildComponent.vue';

export default {
  name: 'ParentComponent',
  components: {
    ChildComponent
  },
  data() {
    return {
      msg: ''
    }
  },
  methods: {
    receiveMsg(msg) {
      this.msg = msg;
    }
  }
}
</script>

子组件

<template>
  <div>
    <button @click="sendMessage">发送消息</button>
  </div>
</template>
<script>
export default {
  name: 'ChildComponent',
  methods: {
    sendMessage() {
      this.$emit('sendMsg', 'Hello Vue3');
    }
  }
}
</script>

Provide/Inject

Provide/Inject是Vue3提供的一种父组件向子组件传递数据的方式。在父组件中通过provide选项提供数据,然后在子组件中通过inject选项来注入数据。示例代码如下:

父组件

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

export default {
  name: 'ParentComponent',
  components: {
    ChildComponent
  },
  provide() {
    return {
      message: 'Hello Vue3'
    }
  }
}
</script>

子组件

<template>
  <div>
    <p>{{ message }}</p>
  </div>
</template>
<script>
export default {
  name: 'ChildComponent',
  inject: ['message']
}
</script>

$attrs/$listeners

在Vue3中,父组件向子组件传递的数据不仅仅局限于上述提到的方式。父组件传递到子组件的属性和事件也可以在子组件中使用。在子组件模板中,通过 $attrs$listeners 分别访问父组件传递下来的非 prop 特性和监听器(事件)。示例代码如下:

父组件

<template>
  <div>
    <ChildComponent title="Hello" @change="handleChange"></ChildComponent>
  </div>
</template>
<script>
import ChildComponent from './components/ChildComponent.vue';

export default {
  name: 'ParentComponent',
  components: {
    ChildComponent
  },
  methods: {
    handleChange(e) {
      console.log(e.target.value);
    }
  }
}
</script>

子组件

<template>
  <div>
    <input v-bind="$attrs" v-on="$listeners" />
  </div>
</template>
<script>
export default {
  name: 'ChildComponent',
  inheritAttrs: false
}
</script>

以上是Vue3中常用的几种组件间通信方式,当然还有其他的方式,如provide/inject函数、Vuex等。根据实际需求选择合适的方式进行组件间通信。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue3组件间的通信方式详解 - Python技术站

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

相关文章

  • vue数据响应式原理重写函数实现数组响应式监听

    这里我为大家详细讲解一下“Vue数据响应式原理重写函数实现数组响应式监听”这个话题。 什么是Vue数据响应式原理 首先,我们要了解Vue的数据响应式原理。Vue可以实现数据的自动化更新,是因为它采用了数据劫持和发布订阅模式的方式。 Vue在读取数据时,会通过 Object.defineProperty 方法来劫持该数据的 getter 和 setter,一旦…

    Vue 2023年5月28日
    00
  • 详解Vue3的响应式原理解析

    详解Vue3的响应式原理解析 什么是响应式原理 Vue3的核心原理之一是响应式原理。简单来说,响应式原理是让运用了Vue3的项目能够在数据发生改变时实时进行视图更新的机制。 响应式原理的实现 Vue3的响应式原理通过Proxy实现。Proxy是ES6引入的一种代理机制,类似于Object.defineProperty(),但是比defineProperty更…

    Vue 2023年5月27日
    00
  • 使用Vue中 v-for循环列表控制按钮隐藏显示功能

    使用Vue中v-for循环列表控制按钮隐藏显示功能分为以下几个步骤: 在Vue实例中定义数据:需要定义一个存储列表数据的数组,以及每个元素对应的控制按钮是否显示的状态变量。比如: data() { return { list: [ { id: 1, name: ‘item 1’, showButton: false }, { id: 2, name: ‘it…

    Vue 2023年5月29日
    00
  • package.json配置文件构成详解

    当我们在创建一个Node.js项目时,会生成一个package.json配置文件,这个文件是用来描述整个项目的配置信息以及依赖的管理。本攻略将详细讲解package.json文件的构成和作用,让你更好地了解Node.js项目的管理。 什么是 package.json package.json是一个在Node.js项目中所必须的配置文件。这个文件描述了项目的依…

    Vue 2023年5月28日
    00
  • 浅谈Vuejs Prop基本用法

    浅谈Vuejs Prop基本用法 在Vue.js中,prop是被用来从父组件传递数据到子组件的一个自定义属性。在这篇文章中,我们将会浅略介绍prop的基本用法。 prop的基本语法 使用prop需要在子组件中定义一个props属性,该属性包含一个对象,该对象的每个属性都是我们期望从父组件接收的数据。 例如: <template> <div&…

    Vue 2023年5月27日
    00
  • 手把手教你拿捏vue cale()计算函数使用

    下面是手把手教你拿捏 Vue cale() 计算函数使用的完整攻略: 什么是 Vue cale() 函数 cale() 函数是 Vue 组件内置的计算函数,主要用来缓存和计算组件中需要展示的变量值,当变量值发生变化时,cale() 函数会自动重新计算,并重新渲染视图,从而实现数据响应式更新的效果。 如何使用 Vue cale() 函数 在 Vue 组件中使用…

    Vue 2023年5月29日
    00
  • vue关于下载文件常用的几种方式

    Vue 作为一种流行的前端框架,提供了几种下载文件的方式。本篇文章将介绍 Vue 常用的几种前端下载文件的技巧。 1. 通过a标签下载文件 a 标签是 HTML 中常用的下载文件的方式之一。Vue 在处理下载文件时,可以通过创建一个 a 标签,设置其 href 属性和 download 属性来实现文件下载。 <template> <div&…

    Vue 2023年5月28日
    00
  • 一文详解如何在vue中实现文件预览功能

    下面我将详细讲解如何在Vue中实现文件预览功能。 一、需求 在Web应用中,我们可能需要上传文件,并在上传后进行预览,以便用户确认上传的文件是正确的。因此,我们需要实现文件预览功能。 二、方案 在Vue中实现文件预览功能,通常有以下两种方案: 方案一:使用第三方插件 Vue社区中已经有许多第三方插件实现了文件预览的功能。我们可以通过npm安装相应插件,并根据…

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