【发布时间】:2016-04-29 20:59:15
【问题描述】:
我正在包装 Bootstrap React 以在 Japgolly ScalaJS React 中使用并提出以下内容:
case class NavItem(
onClick: UndefOr[js.Function1[ReactEvent, Boolean]] = undefined,
// ...
) { /* ... create method here */ }
object NavItem {
def toPage[T](page: T, children: ReactNode*)(implicit ctl: RouterCtl[_ >: T]) = {
val clickFunction: js.Function1[ReactEvent, Boolean] = { e: ReactEvent =>
e.preventDefault()
ctl.set(page).runNow()
true
}
NavItem(
key = page.toString,
href = ctl.pathFor(page).value,
onClick = clickFunction
).create(
children
)
}
}
这可行,但我觉得比它可能的要复杂。
我的第一个想法是改用 onClick : UndefOr[ReactEvent => Callback],这似乎更符合 japgolly ScalaJS React 通常的方法,所以我尝试了:
val clickEvent: ReactEvent => Callback = e => {
e.preventDefault()
ctl.set(page)
}
这会编译,但即使调试显示调用了回调,页面也不会切换。为什么在这种情况下页面从不切换?
有关如何正确执行 NavItem 的任何建议,该 NavItem 在单击链接时显示链接,但使用路由器实际路由?什么是惯用方式?
【问题讨论】: