获取案例类而不是dynRenderR中的特征

时间:2016-02-16 06:48:52

标签: scala intellij-idea scala.js scalajs-react

我正在研究一个scalajs-react项目,我无法通过以下方式进行类型检查。相关文档为herehere

我的网页是:

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组件返回类型为Pages的值,当我真的需要类型Product的值才能访问id属性时Pages特质没有。

产品页面:

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组件来传递产品而不是页面,还是不能以这种方式使用?

1 个答案:

答案 0 :(得分:2)

  

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

Unfortunatley,Intellij的编译/错误报告并不完美,特别是在存在宏的情况下。虽然我不知道scalajs反应的细节,但您可以放心,如果您的代码编译并运行正常,您只会看到一个Intellij错误。

所以你能做的就是:

  • 与之共存或
  • 提交错误。

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