我有以下graphQL结果:
[仅{详细信息=仅“ 33秒引擎故障和车辆丢失”,launch_year =仅“ 2006”,链接=仅{article_link =仅“ https://www.space.com/2196-spacex-inaugural-falcon -1-rocket-lost-launch.html “},mission_name = Just” FalconSat“}]
基于以下类型:
type alias Launch =
{ mission_name : Maybe String
, details : Maybe String
, launch_year : Maybe String
, links : Maybe LaunchLinks
}
type alias Launches =
Maybe (List (Maybe Launch))
type alias LaunchLinks =
{ article_link : Maybe String
}
Run Code Online (Sandbox Code Playgroud)
我想通过List.map并将结果显示在无序列表中。我从这个开始:
renderLaunch : Launches -> Html Msg
renderLaunch launches =
div [] <|
case launches of
Nothing ->
[ text "Nothing here" ]
Just launch ->
launch
|> List.map (\x -> x)
|> ul []
Run Code Online (Sandbox Code Playgroud)
但我不断收到此错误:
此函数无法处理通过(|>)管道发送的参数:
141 | 发射142 | |> List.map(\ x-> x)143 | |> ul [] ^^^^^参数为:
Run Code Online (Sandbox Code Playgroud)List (Maybe Launch)但是(|>)将它传递给以下函数:
Run Code Online (Sandbox Code Playgroud)List (Html msg)
问题是这种Just launch情况需要导致a,List (Html msg)但是代码会导致返回不同的类型。
使用时List.map (\x -> x),它本质上是无操作的。您正在遍历a List (Maybe Launch)并返回相同的东西。我建议创建另一个带有Maybe Launch值的函数并将其用作映射函数。例如:
displayLaunch : Maybe Launch -> Html Msg
displayLaunch launch =
case launch of
Nothing -> text "No launch"
Just l -> text (Debug.toString l)
Run Code Online (Sandbox Code Playgroud)
现在,您可以将其插入到映射功能中:
Just launch ->
launch
|> List.map displayLaunch
|> ul []
Run Code Online (Sandbox Code Playgroud)
但是,哎呀!现在,您将收到一个新错误,指示:
The 2nd branch is:
Html Msg
But all the previous branches result in:
List (Html msg)
Run Code Online (Sandbox Code Playgroud)
这里的问题是我们现在ul从Just launch分支返回a ,并且我们需要返回html列表。您可以List.singleton用来创建仅包含一项的列表:
The 2nd branch is:
Html Msg
But all the previous branches result in:
List (Html msg)
Run Code Online (Sandbox Code Playgroud)