获取 case class 而不是 dynRenderR 中的特征
Getting the case class instead of the trait in dynRenderR
我正在做一个 scalajs-react 项目,我无法得到以下类型检查。相关文档是here and here.
我的页面是:
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 组件来传递产品而不是页面,或者不能以这种方式使用它?
Strangely, this compiles and runs no problem; it is intellij which is complaining [...]
不幸的是,Intellij 的 compilation/error 报告并不完美,尤其是在存在宏的情况下。虽然我不知道 scalajs-react 的细节,但您可以放心,如果您的代码编译并运行良好,您只会看到一个 Intellij 错误。
所以你所能做的就是:
- 忍受它或者
- 提交错误。
抱歉,我没有更好的消息。
我正在做一个 scalajs-react 项目,我无法得到以下类型检查。相关文档是here and here.
我的页面是:
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 组件来传递产品而不是页面,或者不能以这种方式使用它?
Strangely, this compiles and runs no problem; it is intellij which is complaining [...]
不幸的是,Intellij 的 compilation/error 报告并不完美,尤其是在存在宏的情况下。虽然我不知道 scalajs-react 的细节,但您可以放心,如果您的代码编译并运行良好,您只会看到一个 Intellij 错误。
所以你所能做的就是:
- 忍受它或者
- 提交错误。
抱歉,我没有更好的消息。