簡體   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