admin 管理员组

文章数量: 887021


2024年1月5日发(作者:氮是微量元素还是常量元素)

vue3父子组件方法调用

在中,组件是一个重要的概念,Vue3中,父子组件方法的调用方式也经过了一些变化。在Vue3中,父子组件之间的通信有3种方式:props和emit、provide和inject、$refs和$parent/$children。本文将着重讲述前两种方式。

1. Props和Emit。

Props是一种通过父组件向子组件传递数据的方式。在子组件中,可以通过props来接收父组件传递过来的数据。通过这种方式,父组件可以向子组件传递属性、方法、事件等。下面是一个示例:

```javascript。

//父组件。

//子组件。

```。

在子组件中,我们通过props接收了父组件传递的name和age。同时,我们在子组件中定义了childFunc方法,并通过$emit触发了childEvent事件,将msg作为参数传递给父组件。

在父组件中,我们通过使用v-bind指令将name和age的值传递给子组件,并通过v-on指令监听childEvent事件,并调用parentEvent方法打印出传递的msg值。

2. Provide和Inject。

Provide和Inject是提供的一种用于父子组件之间数据传递的API。它允许父组件向其所有子孙组件提供数据,而不需要显式地将每个数据通过props传递。下面是一个示例:

```javascript。

//父组件。

//子组件。

//子组件的子组件。

```。

在父组件中,我们通过provide方法将theme和changeTheme函数向子孙组件提供。在provide方法中,我们将theme的初始值设置为'light',方法设置为Theme,表示后面所有的子孙组件都可以通过inject方法获取这些值。

在子组件中通过inject方法获取父组件中提供的值,获取的方式与props类似。在子组件的子组件中,我们通过注入的theme值来设置当前

组件的样式。同时,我们通过注入的changeTheme方法来更改主题,并重新渲染组件。

总结:

在Vue3中,父子组件间通信有3种方式:props和emit、provide和inject、$refs和$parent/$children。这些方法都可以实现父子组件间的数据传递和方法调用。在实际开发中,我们需要根据应用场景选择不同的方法来实现组件通信,让代码更加简洁、高效、易于维护。


本文标签: 组件 方法 传递 父子