使用BuilderParam在父组件调用this的方法报错:Error message:is not callable
子组件Child中有一个@BuilderParam 参数,在父组件中使用子组件时将父组件中的builder函数传入子组件中。在builder函数中调用父组件中的方法时,出现报错Error message:is not callable。
问题代码如下:
@Component 
struct Child { 
  @Builder FunABuilder0() { 
        } 
  @BuilderParam aBuilder0: () => void = this.FunABuilder0; 
  
  build() { 
    Column() { 
      this.aBuilder0() 
    } 
  } 
} 
  
@Entry 
@Component 
struct Parent { 
  @Builder componentBuilder() { 
    Text(`Parent builder `) 
      .onClick(()=>{ 
        this.test1() 
      }) 
  } 
  
  test1(): void { 
    console.log('test1') 
  } 
  
  build() { 
    Column() { 
      Child({ aBuilder0: this.componentBuilder }) 
    } 
  } 
}
        HarmonyOS
      
        赞
        
 收藏 0
 回答 1
 
        待解决
        
相关问题
 HarmonyOS 页面跳转传递的参数,在回调中访问报错:Error message:is not callable 
1619浏览  • 1回复 待解决
HarmonyOS  jscrash,代码报Error message:is not callable 
2477浏览  • 1回复 待解决
HarmonyOS 在onWindowStageCreate调用requestEnableNotification报错 {"code":1600001} message is Internal error 
1324浏览  • 1回复 待解决
在native里面写一个获取以太网MAC地址的接口,但是报错了Error message: is not callable 
4064浏览  • 1回复 待解决
父组件调用子组件的方法 
2657浏览  • 1回复 待解决
子组件调用父组件里的方法 
1414浏览  • 1回复 待解决
冷启动报错Error message 
3461浏览  • 1回复 待解决
HarmonyOS 父组件怎么调用子组件的方法 
1664浏览  • 1回复 待解决
HarmonyOS 子组件调用父组件的方法demo 
1150浏览  • 1回复 待解决
HarmonyOS 父组件调用子组件方法 
1190浏览  • 1回复 待解决
怎么把子组件的方法暴露给父组件调用? 
1116浏览  • 1回复 待解决
app启动crash报错Error message:MainPage: 
3005浏览  • 1回复 待解决
HarmonyOS 父组件如何调用子组件的方法? 
1426浏览  • 1回复 待解决
HarmonyOS 使用audio.createAudioCapturer开发音频录制功能,调用audioCapturer.stop的时候报错 error:{ code: 600301, message.....: "system error" } 
1406浏览  • 1回复 待解决
HarmonyOS 父组件如何调用子组件里的方法 
1269浏览  • 1回复 待解决
HarmonyOS 父组件怎么直接调用子组件的方法 
1405浏览  • 1回复 待解决
HarmonyOS  关于子组件调用父组件方法的问题 
2435浏览  • 1回复 待解决
HarmonyOS 利用BuilderParam将组件传值后,调用方法闪退 
1427浏览  • 1回复 待解决
开源鸿蒙中 ets子组件调用父组件中的方法? 
7217浏览  • 1回复 待解决
HarmonyOS 自定义组件的方法和属性在父组件无法通过链式调用吗? 
1353浏览  • 1回复 待解决
HarmonyOS  request.uploadFile 报错 empty error message 
1620浏览  • 1回复 待解决
HarmonyOS  如何在父组件中调用子组件的方法 
1116浏览  • 1回复 待解决
父组件怎么方便的调用孙组件里面的方法?? 
2673浏览  • 1回复 待解决
如何在父组件中调用子组件封装的方法 
2922浏览  • 1回复 待解决





















在js中调用this时需要注意this的指向。当前代码在子组件中声明builder方法时,this指向的是父组件,而@Builder componentBuilder()通过this.componentBuilder的形式传给子组件@BuilderParam customBuilderParam,this指向在Child的label,即“Child”,所以在点击事件响应的时候,this是指向Child而child中没有test()所以出现jscrash。需要在父组件中声明子组件时通过bind(this)或者监听函数将this传递到子组件。
参考代码:
注意事项:
js中在将方法进行传递时,如果方法中有使用this,需要注意this的传递,类似的场景在自定义弹窗的builder方法中也容易出现。