繁体   English   中英

将 static javascript 函数导入 scala.js

[英]importing static javascript functions into scala.js

在第三方库 react-native-fbsdk-next 我有一个文件 FBAccessToken.ts 下面的 class 有一些普通成员和一个 static 成员 ZC1C425268E68385D14AB5074C17Z9。

class FBAccessToken {

  accessToken: string;
  permissions: Array<string>;

  static getCurrentAccessToken() {
    return new Promise<FBAccessToken | null>((resolve) => {
    ...
    }
  }
}

export default FBAccessToken;

我需要同时导入 class 成员以及 static function。

我的策略是像这样使用 scala class 和伴侣 object

  @native
  @JSImport("react-native-fbsdk-next", "FBAccessToken")
  class FBAccessToken extends js.Object {
    def accessToken: String = native
    def permissions: Array[String] = native
  }

  @native
  @JSImport("react-native-fbsdk-next", "FBAccessToken")
  object FBAccessToken extends js.Object {
    def getCurrentAccessToken: Promise[FBAccessToken | Null] = native
  }

但是 static function 到伴侣 object 导入似乎不起作用。 sbt fastOptJs工作但在模拟器中运行应用程序时我得到

TypeError: undefined is not an object (evaluating '_$$_REQUIRE(_dependencyMap[4], "react-native-fbsdk-next").FBAccessToken.getCurrentAccessToken')

我究竟做错了什么?

FBAccessToken在 JavaScript 库中的default导出下导出:

export default FBAccessToken;

而不是以其自己的名称"FBAccessToken"

因此,当从 Scala.js 导入它时,您必须使用JSImport.Default作为@JSImport的第二个参数:

@JSImport("react-native-fbsdk-next", JSImport.Default)

这适用于classobject

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM