我正在构建我的第一个Elm应用程序,并根据这些资料构建它:
NoMap approach with Domain focus
这意味着我将Msg
类型从主Types.elm
映射到子函数。做一个简单的onClick
函数时,看起来像这样
onClick (MsgForPieChart <| SelectSlice <| sliceModel.points)
现在,我想在init上获取一些数据以进行查看。
我尝试使用与简单的onClick
函数相同的方法
getWarAndPeace : Cmd Msg
getWarAndPeace =
Http.send (MsgForMuseums <| FetchedMuseums) <|
Http.getString "https://example.com/books/war-and-peace.md"
我的主要类型如下:
type Msg
= MsgForPieChart Atom.PieChart.Types.Msg
| MsgForMuseums Organism.Museums.Types.Msg
| NoOp
对于http
请求,我的子函数类型看起来像这样
type Msg =
FetchedMuseums (Result Http.Error String)
但是无论我尝试什么,我都会不断从Http.send
或Task
或类似的方法中得到类似的类型错误
Result Http.Error a -> App.Types.Msg
但这是
App.Types.Msg
我的更新功能的结构如下:
update : App.Types.Msg -> Organism.Museums.Types.MuseumsModel -> Organism.Museums.Types.MuseumsModel
update msgFor model =
case msgFor of
MsgForMuseums msg ->
updateMuseums msg model
_ ->
model
updateMuseums : Organism.Museums.Types.Msg -> Organism.Museums.Types.MuseumsModel -> Organism.Museums.Types.MuseumsModel
updateMuseums msg model =
case msg of
FetchedMuseums data -> model
那么我如何在子函数的init上获取http
请求,该函数使用NoMap模式组合Msg
答案 0 :(得分:1)
使用Dogbert建议的Http.send (MsgForMuseums << FetchedMuseums)
确实解决了该问题