Vue 面试题
目录

Vue 中父子组件如何通信?

· 约 7 分钟读完 · 第 70 / 211 章

推荐答案

在 Vue 中,父子组件之间的通信可以通过以下几种方式实现:

  1. Props 和 Events:

    • 父组件通过 props 向子组件传递数据。
    • 子组件通过 $emit 触发事件,父组件通过监听这些事件来响应子组件的动作。
  2. $refs:

    • 父组件可以通过 ref 属性获取子组件的实例,并直接调用子组件的方法或访问其数据。
  3. $parent 和 $children:

    • 子组件可以通过 $parent 访问父组件的实例。
    • 父组件可以通过 $children 访问子组件的实例。
  4. Provide / Inject:

    • 父组件通过 provide 提供数据,子组件通过 inject 注入数据。
  5. Vuex:

    • 使用 Vuex 状态管理库,父子组件通过共享的状态进行通信。

本题详细解读

1. Props 和 Events

Props 是父组件向子组件传递数据的主要方式。父组件通过 v-bind 或简写 : 将数据传递给子组件,子组件通过 props 接收数据。

2. $refs

$refs 允许父组件直接访问子组件的实例。父组件可以通过 ref 属性给子组件命名,然后在父组件中通过 this.$refs 访问子组件。

3. $parent 和 $children

$parent 和 $children 允许组件直接访问其父组件或子组件的实例。这种方式虽然方便,但不推荐频繁使用,因为它会使组件之间的耦合度增加。

4. Provide / Inject

provide 和 inject 是 Vue 提供的一种高级组件通信方式,允许祖先组件向其所有子孙组件注入依赖。

5. Vuex

Vuex 是 Vue 的官方状态管理库,适用于大型应用中的状态管理。父子组件可以通过 Vuex 共享状态,而不需要直接传递数据。