有两种方案:

/**
 * 方案1:@Link或者@Provide 因为双向同步,所以可以实现子到父的同步。
 * 方案2:子调用父的方法:1.父封装方法。2.把方法传递给子。3.子调用父的方法。
 */

@Component
struct Son {
  private getSonData: (data: string) => void = () => {
  };
  @State data: number = 1001;

  build() {
    Column() {
      Text('Son点击')
        .fontSize(30)
        .onClick(() => {
          this.getSonData(this.data.toString());
        })
    }
    .padding(10)
    .border({ width: 5, color: Color.Green })
  }
}

@Entry
@Component
struct SonToFatherDemo {
  @State mData: string = '';
  getSonData = (data: string) => {
    console.info('获取到的数据:', data);
    this.mData = data;
  }

  build() {
    Column() {
      Text(`父组件获取到的数据:${this.mData}`)
        .fontSize(30)
      Son({
        getSonData: this.getSonData
      })
    }
    .width('100%')
    .height('100%')
    .padding(10)
    .border({ width: 5, color: Color.Red })
    .alignItems(HorizontalAlign.Center)
    .justifyContent(FlexAlign.Center)
    .backgroundColor(Color.Yellow)
  }
}

在这里插入图片描述

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐