HarmonyOS 动态import变量表达式做反射

拼接变量表达式的话,then回调不执行,代码如下:

let filePath = './jsapi/' + className;
import(filePath).then((ns: ESObject) => {
  let jsApiObj: SailJsApiInterface = new ns[className]();  // 实例化类
  jsApiObj.handleH5Event(h5EventHandler);
});
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
HarmonyOS
2024-12-23 15:44:15
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
fox280

根据描述,建议查看以下问题:

1、查看拼接的filPath是否有问题;

2、查看build-profile.json5的runtimeOnly是否添加路径;

详情请查看:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-dynamic-import-V5#动态import实现中的关键点

以下是参考demo:

//entry\build-profile.json
"arkOptions": {
  "runtimeOnly": {
    "sources": [
    "./src/main/ets/pages/jsapi/jsApiObj.ets",
    ]
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
//entry\src\main\ets\pages\jsapi\jsApiObj.ets
export class jsApiObj {
  public handleH5Event(a:number, b:number):number {
    let c = a + b;
    console.log('DynamicImport I am harlibrary in staticAdd, %d + %d = %d', a, b, c);
    return c;
  }
}

//entry\src\main\ets\pages\importDemo.ets
class Name {
  className:string = 'jsApiObj'
  public getInstance():string{
    return this.className
  }
}
interface SailJsApiInterface {
  handleH5Event(a:number, b:number):number
}
@Entry
@Component
struct importDemo{
  @State text1:number = 0;
  @State text2:number = 0;
  @State name:Name = new Name();
  build() {
    Column(){
      Text(`测试本地值${this.text1}`).onClick(()=>{
        let className = this.name.getInstance();
        let filPath = './jsapi/'+className;
        import(filPath).then((ns:ESObject)=>{
          let jsApiObj:SailJsApiInterface = new ns[className]();
          this.text1 = jsApiObj.handleH5Event(12,12)
        })
      })
        .fontSize(20)
        .textAlign(TextAlign.Center)
        .backgroundColor(Color.Gray)
    }
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
分享
微博
QQ
微信
回复
2024-12-23 19:05:12


相关问题
动态import 变量表达式
1917浏览 • 1回复 待解决
HarmonyOS 扩展表达式
583浏览 • 1回复 待解决
如何使用正则表达式
1002浏览 • 1回复 待解决
HarmonyOS 正则表达式匹配不到
625浏览 • 1回复 待解决
使用正则表达式的示例
1262浏览 • 1回复 待解决
HarmonyOS 正则表达式执行有问题
675浏览 • 1回复 待解决
HarmonyOS 如何自定义正则表达式
724浏览 • 1回复 待解决
mysql正则表达式匹配数字
2654浏览 • 1回复 待解决
HarmonyOS 环境如何反射执行
1076浏览 • 1回复 待解决
HarmonyOS 动态import失败
770浏览 • 1回复 待解决
HarmonyOS import动态导入库失败
651浏览 • 1回复 待解决
HarmonyOS 动态import so使用问题
717浏览 • 1回复 待解决
HarmonyOS import动态导入绝对路径
1320浏览 • 1回复 待解决
HarmonyOS如何动态路由跳转
937浏览 • 1回复 待解决