首页 > 解决方案 > 我应该如何匹配 Elmish toNavigable 参数类型

问题描述

我目前正在尝试学习安全堆栈,特别是尝试通过 Elmish 处理 URL 导航;我遵循 Elmish 站点上的示例代码,该代码定义了一个路由映射函数,然后将其传递给parsePath函数。但是,Program.toNavigable需要Parser<'a>类型(Location -> 'a的类型别名)作为其第一个参数,但示例代码(parsePath 路由)的第一个参数是Location -> 'a option。显然我可以使用函数组合来获得正确的输入,但似乎我在这里遗漏了一些东西。任何熟悉 Elmish 中的 URL 导航的人都可以建议吗?

标签: f#url-routingelmish

解决方案


好吧, aParser<'a option> a Parser<'a>(只是和 another 'a),所以事情应该很好。

例如,假设以下类型定义了所有导航:

type Route = Blog of int | Search of string

那么当事人应该有以下几种类型:

init: Route option -> Model * Cmd<Msg>
parser: Parser<Route option>
urlUpdate: Route option -> Model -> Model * Cmd<Msg>

这样你就可以编写你的程序了:

Program.mkProgram init update view
|> Program.toNavigable parser urlUpdate
|> Program.withReactBatched "elmish-app"
|> Program.run

推荐阅读