我应该如何匹配 Elmish toNavigable 参数类型

How should i match the Elmish toNavigable argument types

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

好吧,一个 Parser<'a option> 一个 Parser<'a>(只是和另一个 '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