TextReader 初始化成功了但按钮状态没更新,哪里写错了?

我在初始化朗读控件的时候,控制台日志显示初始化成功了,但是按钮图标的状态(isInit)没有变化,看起来图标没激活。以下是我的初始化代码:

const readerParam: TextReader.ReaderParam = {
  isVoiceBrandVisible: true,
  businessBrandInfo: {
    panelName: '小艺朗读'
  }
}
try {
  await TextReader.init(getContext(this), readerParam);
  this.isInit = true;
} catch (err) {
  console.error(`init 失败:`, err);
}

是不是需要放在某个生命周期里或者配合其他 UI 的刷新?麻烦帮我看看。

阅读 711
1 个回答

你的逻辑是对的,但状态更新如果写在组件外部作用域可能不会触发 UI 刷新。确保以下几点:

this.isInit 是 @State 修饰的;
init() 方法是写在组件类内部的;

初始化应写在 aboutToAppear() 或 onWindowStageCreate() 中,确保 UI 渲染完再赋值;

@State isInit: boolean = false;

async aboutToAppear() {
  await this.init(); // UI 生命周期内调用
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进