f# - 我应该如何匹配 Elmish toNavigable 参数类型
问题描述
我目前正在尝试学习安全堆栈,特别是尝试通过 Elmish 处理 URL 导航;我遵循 Elmish 站点上的示例代码,该代码定义了一个路由映射函数,然后将其传递给parsePath函数。但是,Program.toNavigable需要Parser<'a>类型(Location -> 'a的类型别名)作为其第一个参数,但示例代码(parsePath 路由)的第一个参数是Location -> 'a option。显然我可以使用函数组合来获得正确的输入,但似乎我在这里遗漏了一些东西。任何熟悉 Elmish 中的 URL 导航的人都可以建议吗?
解决方案
好吧, 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
推荐阅读
- javascript - 如何通过常用函数从 JS 对象中提取键值?
- c++ - 自定义转换不能指定返回类型
- android - Android TV:如何使用 Leanbak 自定义 android TV 的左侧导航面板?
- flutter - 无效的插件规范。无效的“macos”插件规范。在生成应用程序包时
- celery - Celery + Channels:在工作人员中接收消息
- python - 使用 Python Selenium 单击表格元素
- c# - 通过 itextsharp .net 从 pdf 中删除链接
- tomcat - 配置为侦听端口 8081 的 Tomcat 连接器无法启动。端口可能已在使用中或连接器可能配置错误
- php - 将两个关联数组转换为一个多维数组 PHP
- php - 在foreach循环之后如何在php中写入这个变量或那个变量