Elm:如何将 Html FooMsg 转换为 Html Msg
Elm: How to transform Html FooMsg to Html Msg
我是 Elm 新手。我有一个包含两个页面的网站:主页和注册。
Home 有自己的视图,Signup 有自己的视图,但它们都是 return Html Msg
。我想更改它,以便主页 returns Html HomeMsg
和注册 returns Html SignupMsg
。
编写这些视图函数当然很容易,但我认为我的顶级视图函数需要将结果转换为 Html Msg
。
这是消息类型。
type Msg
= Home HomeMsg
| Signup SignupMsg
| OnLocationChange Location
我想我需要某种 map
函数来做到这一点
view : Model -> Html Msg
view model =
case model.route of
Model.HomeRoute ->
map Home (homeView model)
Model.SignupRoute ->
map Signup (signupView model)
Model.NotFoundRoute ->
notFoundView
是的,有一个map
函数。它属于 Html
模块。
http://package.elm-lang.org/packages/elm-lang/html/2.0.0/Html#map
您的代码变为:
view : Model -> Html Msg
view model =
case model.route of
Model.HomeRoute ->
Html.map Home (homeView model)
Model.SignupRoute ->
Html.map Signup (signupView model)
Model.NotFoundRoute ->
notFoundView
我是 Elm 新手。我有一个包含两个页面的网站:主页和注册。
Home 有自己的视图,Signup 有自己的视图,但它们都是 return Html Msg
。我想更改它,以便主页 returns Html HomeMsg
和注册 returns Html SignupMsg
。
编写这些视图函数当然很容易,但我认为我的顶级视图函数需要将结果转换为 Html Msg
。
这是消息类型。
type Msg
= Home HomeMsg
| Signup SignupMsg
| OnLocationChange Location
我想我需要某种 map
函数来做到这一点
view : Model -> Html Msg
view model =
case model.route of
Model.HomeRoute ->
map Home (homeView model)
Model.SignupRoute ->
map Signup (signupView model)
Model.NotFoundRoute ->
notFoundView
是的,有一个map
函数。它属于 Html
模块。
http://package.elm-lang.org/packages/elm-lang/html/2.0.0/Html#map
您的代码变为:
view : Model -> Html Msg
view model =
case model.route of
Model.HomeRoute ->
Html.map Home (homeView model)
Model.SignupRoute ->
Html.map Signup (signupView model)
Model.NotFoundRoute ->
notFoundView