HarmonyOS 鸿蒙 Object is possibly 'undefined'. Using "this" inside stand-alone functions is not

发布于 1周前 作者 ionicwang 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next eventhub报Object is possibly ‘undefined’. Using “this” inside stand-alone functions is not supported (arkts-no-standalone-this) 错误提示

从tab页跳转到设置页后,对ut进行了修改,返回到tab页后对数据和ui进行重新绘制和加载,现使用event进行触发操作,事件进行了触发,data有值,但是that.getVipCard()中this报Object is possibly ‘undefined’. Using “this” inside stand-alone functions is not supported (arkts-no-standalone-this) 消息提示
 
getContext(this).eventHub.on(‘event’, (data: number) => {
// 触发事件,完成相应的业务操作
console.log(“你看我返回的数据有没有治,”,data)
if (data===1) {
that.getVipCard()
console.log(“你看我返回的数据有没有治,”,data)
}
});


更多关于HarmonyOS 鸿蒙 Object is possibly 'undefined'. Using "this" inside stand-alone functions is not的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

不支持在独立的函数中使用this,可以在函数外面定义一个变量let context = getContext(),再将context 给下面的函数使用。 构建EventHubUtil方法:

/// EventHubUtil.ets

let context = getContext(this)

let eventhub = context.eventHub

export class EventHubUtil {

  /// 订阅事件

  static on(eventName: string, callback: Function) {

    eventhub.on(eventName, callback)

  }

  /// 取消订阅事件

  static off(eventName: string, callback?: Function) {

    eventhub.off(eventName, callback)

  }

  /// 触发事件

  static emit(eventName: string, ...params: Object[]) {

    eventhub.emit(eventName, params)

  }

}

调用EventHubUtil方法:

import router from '@ohos.router'

import { EventHubUtil } from './EventHubUtil'

@Entry

@Component

export default struct user {

  aboutToAppear(): void {

    EventHubUtil.on('onclick',(data:number)=>{

      console.info('***data:'+data)

      if(data==1){

        this.setting()

      }

    })

  }

  build() {

    Button("点击").onClick(()=>{

      router.pushUrl({

        url:'pages/setting'

      })

    })

  }

  setting(){

    console.log("输出内容")

  }

}

更多关于HarmonyOS 鸿蒙 Object is possibly 'undefined'. Using "this" inside stand-alone functions is not的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,遇到Next eventhub报“Object is possibly ‘undefined’. Using ‘this’ inside stand-alone functions is not supported (arkts-no-standalone-this)”错误提示时,通常是因为在独立函数(如事件处理函数)中不当地使用了this关键字。

在ArkTS(ArkUI TypeScript)环境中,独立函数并不绑定特定的上下文对象,因此this关键字无法指向预期的实例对象,可能导致未定义的行为。解决这一问题的方法通常包括:

  1. 避免在独立函数中使用this:确保在事件处理函数等独立函数中不依赖this访问实例属性或方法。

  2. 使用箭头函数:箭头函数不绑定自己的this,它会捕获其所在上下文的this值,因此在箭头函数中可以使用this来访问实例。

  3. 显式传递对象:将需要的对象作为参数传递给事件处理函数,而不是依赖this

例如,如果你有一个事件处理函数需要访问组件的状态,可以将该状态作为参数传递给处理函数,而不是在函数内部使用this

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部