HarmonyOS Toggle组件在onChange内切换暗黑模式时会回调onChange两次, 且回调开关状态完全相反

页面内点击Toggle切换按钮, 页面正常切换为暗黑模式, 但是按钮的开关状态不变, 排查发现切换按钮回调了两次, 且两次的开关状态互不相同. 请问这种情况下怎么处理, 保证回调的正确性。

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

参考demo:

@Entry
@Component
struct  TogglePage2 {
  @State isDarkMode: boolean = false
  build() {
    Column() {
      Toggle({ type: ToggleType.Switch ,isOn:this.isDarkMode})//isOn 属性值在有触发刷新页面的场景中,不要省略
        .onChange((isOn: boolean) => {
          console.log('Toggle.onChange2: isOn', isOn)
          this.isDarkMode = isOn
          getContext(this).getApplicationContext().setColorMode(this.isDarkMode?0:1) //触发二次渲染,渲染不给isOn 熟悉赋值会给默认值false,导致状态不对
        })
    }.width("100%").height("100%").padding(32)
  }
}

Toggle isOn 属性在会触发二次渲染的场景不要省略了,触发二次渲染会读取默认值,如果省略该默认值为false 则会导致toggle 状态不对

分享
微博
QQ
微信
回复
2天前
相关问题
HarmonyOS Web组件
216浏览 • 1回复 待解决
HarmonyOS 事件
42浏览 • 1回复 待解决
HarmonyOS 组件是否有销毁方法
609浏览 • 1回复 待解决
HarmonyOS toggle组件是否支持完全受控
450浏览 • 0回复 待解决
HarmonyOS Scroll组件事件问题
196浏览 • 1回复 待解决
interface如何调用
937浏览 • 1回复 待解决
组件设置visibility属性的
536浏览 • 2回复 待解决
HarmonyOS 活体检测问题
217浏览 • 1回复 待解决
HarmonyOS 如何声明全局函数
342浏览 • 1回复 待解决