elm - 遍历列表以创建元素

标签 elm

这似乎设置正确,但显然不是,而且我看不出哪里出了问题。我正在尝试遍历“对象列表”并为列表中的每个项目创建一个带有 liul 并将它们放在 div 中。忽略涉及 ID 的所有内容。我有一种感觉,我不完全确定 List.map 是如何返回的。

type alias Product =
  { a : String
  , b : String
  , c : Int
  , d : String
  , e : String
  }

type alias Model =
  { id : String
  , products : List Product}

view : Model -> Html Msg
view model =
  div []
    [ input [ type' "text", onInput UpdateText ] []
    , button [ type' "button", onClick GetProduct ] [ text "Search" ]
    , br [] []
    , code [] [ text (toString model.products) ]
    , div [] [ renderProducts model.products ]
    ]

renderProduct product =
  let
    children =
      [ li [] [ text product.a ] 
      , li [] [ text product.b ] 
      , li [] [ text (toString product.c) ] 
      , li [] [ text product.d ] 
      , li [] [ text product.e ] ]
  in
    ul [] children

renderProducts products =
  List.map renderProduct products

错误如下:

The 2nd argument to function `div` is causing a mismatch.

  78|       div [] [ renderProducts model.products ]
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Function `div` is expecting the 2nd argument to be:

  List (VirtualDom.Node a)

But it is:

  List (List (Html a))

最佳答案

renderProducts 返回一个元素列表。 div 的第二个参数采用元素列表。通过将第二个参数括在方括号中,您将创建一个包含单个元素列表的列表。这就是错误消息显示

的原因
But it is:

    List (List (Html a))

你应该这样做:

div [] (renderProducts model.products)

关于elm - 遍历列表以创建元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40536370/

相关文章:

elm - 使用 Elm 0.19.1 安装 NoRedInk/elm-decode-pipeline 时出错

javascript - 使用 webpack 引用 js 文件

Elm - 如何使用 HTML 事件?

dom - 如何在 Elm 中使用 Window.dimensions 初始化模型?

elm - Elm 0.17 及更高版本中的键盘组合

animation - 我如何在 Elm-UI 中的鼠标悬停动画?

elm - 什么 * 是 * Elm 中的 Browser.Navigation.Key?

elm - Elm 中的键盘信号和 Foldp

Elm:属性 "onerror"改为添加 "data-onerror"属性

list - 在没有 Maybe 的情况下在 Elm 中转置