Vue3 子组件数据与方法导出给父组件使用

200 阅读1分钟

Vue3 子组件数据与方法导出给父组件使用

在 Vue3 中,父组件访问子组件的数据和方法主要有两种方式:使用 defineExpose 和 ref,或使用事件和 props。

解决方案分析

方法一:使用 defineExpose + ref (推荐)

  1. 子组件使用 defineExpose 暴露数据和方法
  2. 父组件通过 ref 引用子组件实例
  3. 父组件直接访问子组件暴露的属性和方法

方法二:使用事件和 props (更符合单向数据流)

  1. 子组件通过 emits 发送事件给父组件
  2. 父组件通过 props 传递回调函数给子组件
  3. 父组件通过事件监听或回调函数获取子组件状态

使用建议

  1. 优先使用方法二(事件+props)

    • 更符合 Vue 的单向数据流原则
    • 组件间关系更清晰
    • 更容易维护和调试
  2. 谨慎使用方法一(defineExpose+ref)

    • 适合需要直接访问子组件内部方法的特殊场景
    • 可能导致组件间耦合度增加
    • 在需要访问第三方组件内部方法时特别有用