鸿蒙学习笔记二十二:鸿蒙中父组件和子组件之间的通讯

鸿蒙中组件间的通讯大家可以参考官方文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-component-state-management-V5

文档中已经有的内容这里就不再赘述了,主要写一个实际开发时会用到,但是又很容易临时想不起来的点
情景描述:父组件嵌套了子组件,父组件中执行下拉刷新动作的时候,子组件中也需要调用接口刷新数据
这里的特殊点在于,父组件中有下拉刷新的控件,子组件中没有;因此父组件中执行了刷新操作之后,并非是改变子组件中的某个控件的状态(比如字号调整、字体颜色调整),而是执行子组件中的自定义方法来调用接口;总结起来就是一句话:父组件中的状态改变时子组件中同步调用自定义方法。
解决方案为:

父组件中使用@State标记下拉刷新的变量

@State refreshTag: boolean = **false** //只要refreshTag的值变了,子组件就刷新

子组件中使用@Link 和 @Watch 监听这个变量并与父组件同步变量的状态,并调用本地方法,注意下拉刷新的方法名必须和watch中监听的方法名一致

@Link @Watch('onRefresh') refreshTag: boolean //只要refreshTag的值变了,列表就刷新

 //下拉刷新
  onRefresh() {
    if (this.refreshTag) {
      //恢复成不刷新状态,并同步给父组件,下次再下拉刷新时就能再次监听到变化
      this.refreshTag = false
      //TODO:执行下拉刷新的操作
    }
  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容