HarmonyOS 鸿蒙Next Radio 如何在切换之前做判断?

HarmonyOS 鸿蒙Next Radio 如何在切换之前做判断? 使用Radio 组件 需要 在 Radio切换的时候做判断 判断通过后才可以选中,怎么写呢?

3 回复

可以使用双向绑定变量和@Watch修饰符实现

@Entry
@Component
struct TestGPage {
  @State [@Watch](/user/Watch)('radioChangeA') flagA : boolean = false;
  @State [@Watch](/user/Watch)('radioChangeB') flagB : boolean = false;
  @State currentIndex:number = 1
  radioChangeA(){
    console.info('触发修改A');
  }
  radioChangeB(){
    console.info('触发修改B');
    if(this.currentIndex == 1){
      this.flagB =  true
    } else{
      this.flagB =  false
    }
  }
  build() {
    Row() {
      Column() {
        Text('Radio1')
        Radio({ value: 'Radio1', group: 'radioGroup' }).checked(this.flagA)
        Radio({ value: 'Radio2', group: 'radioGroup' }).checked(this.flagB)
      }
      .width('100%')
    }
    .height('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next Radio 如何在切换之前做判断?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


系统的组件好像不行,点击就直接选中了。可以自己写一个Radio,点击的时候判断条件,符合则选中。

在HarmonyOS中,若要在切换Radio之前进行判断,可以使用RadioContaineronSelect事件。该事件在用户选择Radio时触发,允许你在切换前执行逻辑判断。你可以在onSelect事件中通过event.index获取当前选中的Radio索引,并根据业务逻辑决定是否允许切换。如果判断条件不满足,可以通过event.preventDefault()阻止切换。

例如:

RadioContainer({ onSelect: (event) => {
    if (/* 你的判断条件 */) {
        event.preventDefault(); // 阻止切换
    }
}})

这种方式可以确保在切换Radio之前执行必要的逻辑判断。

回到顶部