首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何渲染React.Suspense?

如何渲染React.Suspense?
EN

Stack Overflow用户
提问于 2019-03-11 17:53:48
回答 1查看 290关注 0票数 1

我试图在一个空页面上呈现一个React.Suspense,但是失败了,出现了以下错误:

代码语言:javascript
复制
Uncaught Invariant Violation: Element type is invalid: expected a
string (for built-in components) or a class/function (for composite
components) but got: object.

下面是代码。它会编译。这是否意味着scalajs-react或scalajs不是100%类型安全的?我应该怎么做才能解决这个问题?

代码语言:javascript
复制
package org.myorg

import japgolly.scalajs.react.{AsyncCallback, React, ScalaComponent}
import japgolly.scalajs.react.vdom.html_<^._
import org.scalajs.dom

object MyPage {

  private val suspense = React.Suspense(
    fallback = <.div("Loading..."),
    asyncBody = AsyncCallback.point(<.div("Loaded!")).delayMs(1000))

  private val component = ScalaComponent.builder[VdomElement]("Home")
    .render_P(p => p)
    .build

  def main(args: Array[String]): Unit = {
    val container = dom.document.getElementById("app")

    // This line works
    component(<.div("hello")).renderIntoDOM(container)

    // Either of the following two lines fails
    component(suspense).renderIntoDOM(container)
    suspense.renderIntoDOM(container)
  }
}

以下是项目文件。

build.properties:

代码语言:javascript
复制
sbt.version=1.2.7

build.sbt:

代码语言:javascript
复制
lazy val root = project.in(file("."))
  .enablePlugins(ScalaJSPlugin)
  .enablePlugins(ScalaJSBundlerPlugin)
  .settings(
    organization := "org.myorg",
    scalaVersion := "2.12.8",
    scalaJSUseMainModuleInitializer := true,
    webpackBundlingMode := BundlingMode.LibraryOnly(),
    emitSourceMaps := false,
    npmDependencies in Compile ++= Seq(
      "react" -> "16.8.4",
      "react-dom" -> "16.8.4"
    ),
    libraryDependencies ++= Seq(
      "com.github.japgolly.scalajs-react" %%% "extra" % "1.4.0"
    ),
    jsEnv := new org.scalajs.jsenv.jsdomnodejs.JSDOMNodeJSEnv()
  )

index.html:

代码语言:javascript
复制
<!doctype html>
<html lang="en" data-framework="scalajs-react">
<head>
    <meta charset="utf-8">
</head>
<body>
<section id="app"></section>
<script src="../target/scala-2.12/scalajs-bundler/main/root-fastopt-library.js"></script>
<script src="../target/scala-2.12/scalajs-bundler/main/root-fastopt-loader.js"></script>
<script src="../target/scala-2.12/scalajs-bundler/main/root-fastopt.js"></script>
</body>
</html>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-17 17:37:59

这似乎是scalajs-react如何声明其导入的问题。

v1.4.1现在正在到Maven Central的路上,应该会修复这个问题。

详细信息请参见https://github.com/japgolly/scalajs-react/issues/522

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55099201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档