0

我正在开发一个 scalajs-react 项目,但无法进行以下类型检查。相关文档在此处此处


我的页面是:

sealed trait Pages
case class Product(id: String) extends Pages

我的路线定义为:

dynamicRouteCT("#product" / string("[a-zA-Z0-9]+")
   .caseClass[Product]) ~> dynRenderR((page, ctl) => ProductPage(page, ctl))

问题是 dynRenderR 组件正在返回一个 type 的值Pages,而我确实需要一个 type 的值Product来访问 id 属性,而该Pagestrait 没有该属性。

产品页面:

case class Props(routeData: Product, ctl: RouterCtl[Pages])

class Backend($: BackendScope[Props, Unit]) {
    def render(props: Props) = <.div("Product view " + props.routeData.id)
}

def apply(product: Product, ctl: RouterCtl[Pages]): ReactElement =
    component(Props(product, ctl))

private val component = ReactComponentB[Props]("Product")
    .renderBackend[Backend]
    .build

奇怪的是,这编译运行没有问题;抱怨的是intellij:

Type mismatch, expected: Product, actual Pages

如何修改或正确利用 dynRender 组件来传递产品而不是页面,或者不能以这种方式使用它?

4

1 回答 1

2

奇怪的是,这编译运行没有问题;抱怨的是 intellij [...]

不幸的是,Intellij 的编译/错误报告并不完美,尤其是在存在宏的情况下。虽然我不知道 scalajs-react 的详细信息,但您可以放心,如果您的代码编译并运行良好,您只会看到一个 Intellij 错误。

所以你所能做的就是:

  • 忍受它或
  • 提交错误。

抱歉,我没有更好的消息。

于 2016-02-16T09:14:55.673 回答