鸿蒙开发中,父组件调用给子组件初始化传一个callback,需要使用bind修改this指向?

鸿蒙开发中,父组件调用给子组件初始化传一个callback,需要使用bind修改this指向,具体问题如下所示:
下面是使用场景代码:
//子组件:
LoginTextView({
content:this.md.account,
textPlaceHolder:"请输入账号",
leftIconStr:'app.media.phoneAccount',
righIconStr:'app.media.moreNumClose',
textChangeCallback:this.textFeildValueAccountChange.bind(this),
})
//父组件:
textFeildValuePasswordChange(value:string){
this.md.password = value;
this.checkCanLogin();
}
checkCanLogin(){
if(this.md.account.trim().length>0&&this.md.password.trim().length>0){

this.md.loginBtnCanClick = true; 

}else{

this.md.loginBtnCanClick = false; 

}
}
这里需要修改this指向,父组件被回调的时候,this是指向子组件。编译时候有arktsCheck 警告。有替代方案么?

阅读 700
1 个回答

你可以用bind是不阻碍编译或者运行的,如果是修改bind指向本作用域this,还可以把使用bind的函数改为箭头函数,可以参考下面代码:

//使用bind 
class Example { 
  private value: number = 42; 
 
  public printValue() { 
    console.log(this.value.toString()); 
  } 
} 
const example = new Example(); 
const boundFunction:ESObject = example.printValue.bind(example); 
boundFunction(); // 输出 42 
 
//使用箭头函数 
class Example { 
  private value: number = 42; 
 
  public printValue = () => { 
    console.log(this.value.toString()); 
  } 
} 
 
const example = new Example(); 
example.printValue(); // 输出 42

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进