# 组件间交互概述
不同的组件之间常常需要有逻辑上的交互。组件框架提供了多种组件间交互的方式。
# 父组件与子组件间的通信
两个有引用与被引用关系的组件,通常可以称为父组件和子组件。父组件通过 usingComponents 引用子组件,并在 WXML 中使用子组件的节点。
- 如果父组件想要传递数据给子组件、触发子组件的特定逻辑,最佳的方式是通过 组件属性 来传递。
- 如果子组件想要传递数据给父组件、触发父组件的特定逻辑,最佳的方式是通过 事件系统 来传递。
- 如果想要在父组件和子组件之间同步数据,可以通过 双向绑定 来同步。
slot 也可以用于向 slot 内容节点树中传递数据,请参考 动态 slot 。
# 同一个 Shadow 树内节点之间的通信
在同一个 Shadow 树内,节点之间有时也需要有逻辑交互。
例如,想要自行实现 <my-form> 和 <my-button> 组件,它们是被页面这样使用的:
<!-- 页面的 WXML -->
<my-form>
<my-button> Submit </my-button>
</my-form>
在 <my-button> 被点击时,需要触发在 Shadow 树上的 <my-form> 组件的提交行为。
这种情况下就需要使用 组件间关系 来实现。
# 直接组件实例访问
有时,上述方式都不够灵活、难以满足复杂的组件交互要求。此时可以使用 节点树访问 的方式,直接获得想要的组件实例 this。
不过,这种方式如果不当使用,容易导致组件间过度耦合,因此不优先推荐。如果需要使用,建议配合 trait behaviors 来进行组件间逻辑解耦。