鸿蒙中组件间的通讯大家可以参考官方文档:
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:执行下拉刷新的操作
}
}