我正在开发一个 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 属性,而该Pages
trait 没有该属性。
产品页面:
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 组件来传递产品而不是页面,或者不能以这种方式使用它?