@Entry
@Component
struct Index {
private itemEdited: boolean = false;
build() {
Column() {
TextInput({ text: '默认文本' })
.onChange(() => {
this.itemEdited = true;
console.log('Input changed');
})
}
}
aboutToAppear() {
console.log('About to appear');
this.itemEdited = false;
}
onPageShow() {
console.log('Page appear');
this.itemEdited = false;
}
}
如上述代码所示,编写过程中发现如果为 TextInput 设置默认文本(而不是留空让用户输入),会触发 onChange 事件调用关联的函数。
并且这个 onChange 事件触发的位置十分奇怪,会在 aboutToAppear() 和 onPageShow() 之后触发,以至于我没办法在后两个事件中将 this.itemEdited 改回 false。
11-06 21:47:37.867 32396-12308 A0c0d0/JSAPP I About to appear
11-06 21:47:37.868 32396-12308 A0c0d0/JSAPP I Page appear
11-06 21:47:38.099 32396-12308 A0c0d0/JSAPP I Input changed
onchange,默认值也是有变化,必然会触发该事件。
然后你说的 aboutToAppear() 和 onPageShow() 先执行,这个你可以看一下生命周期,页面渲染就会执行该方法,所以在onchage前面,一点都不奇怪,当前的现象本身没有任何问题,你这种情况下应该试着修改你的代码逻辑