有无if条件语句时,web组件的onControllerAttached ,onLoadIntercept,onFoucus关键事件调用逻辑的顺序原理

使用web组件直接加载web页面时,通过if条件语句来控制web组件的显示与隐藏的时机。发现添加了if条件语句后,onControllerAttached ,onLoadIntercept,onFoucus这几个事件触发时机与预期理解不一致。

if条件的有无,导致了这三个事件触发顺序的错乱:onControllerAttached —》onLoadIntercept----》onFoucus

HarmonyOS
2024-05-07 22:25:57
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
江湖骗子嗷

直接创建和通过if else创建web的这两个生命周期顺序不同,onControllerAttached,onLoadIntercept这两个生命周期是web的。

如果是正常加载无if条件语句控制,onControllerAttached是先于onLoadIntercept调用的。但被if条件控制后,在if语句条件为false时,web组件会被销毁掉,在if条件切换到true时重新初始化web组件并绑定到初始化生成的webController上。此时的调用逻辑为:获取焦点-> 加载URL -> 重新生成web组件并绑定到最初的的webController上。如果伙伴的需要通过if条件语句来控制web组件的显示与隐藏的时机,建议使用visibility属性来进行控制是否隐藏。

分享
微博
QQ
微信
回复
2024-05-08 16:19:34
相关问题
HarmonyOS 有无对应长按事件
318浏览 • 1回复 待解决
Web组件onKeyEvent键盘事件不生效
1946浏览 • 1回复 待解决
如何按照条件完成样式链式调用
1823浏览 • 1回复 待解决
性能优化中组件复用原理是什么
1920浏览 • 1回复 待解决
HarmonyOS WebController存在调用顺序问题
192浏览 • 1回复 待解决
组件复用生效条件有哪些?
256浏览 • 1回复 待解决