Elm HTML可选属性

Elm HTML可选属性,elm,Elm,如果containerClassName是可选的字符串,给定此html div [ class containerClassName ] [] 我如何使它成为可选的 例如,如果containerClassName为”,则省略该属性,以便生成的DOM不包含没有值的属性类。Elm/core具有著名的Maybe类型,您可以使用该类型对“可选”行为进行建模。因此,您的containerClassName应该使用可能的字符串类型 然后需要一个函数来包装类函数,并接受字符串 maybeCl

如果
containerClassName
是可选的
字符串
,给定此html

div
    [ class containerClassName ]
    []
我如何使它成为可选的


例如,如果
containerClassName
,则省略该属性,以便生成的DOM不包含没有值的属性

Elm/core
具有著名的
Maybe
类型,您可以使用该类型对“可选”行为进行建模。因此,您的
containerClassName
应该使用
可能的字符串类型

然后需要一个函数来包装
函数,并接受
字符串

maybeClass: Maybe String -> List(Html.Attribute msg)
maybeClass maybeClassName =
    case maybeClassName of
        Just className ->
            [class className]
        Nothing ->
            []
你会像这样使用这个新函数

div
    [] ++ (maybeClass containerClassName)
    []

请注意,我选择返回一个
列表
类型,而不是一个
属性
,因为Elm中没有“null”类型,但有一个空列表,当您用空列表附加列表时,它将执行您想要的操作。

其中一个选项是使用
Html.Attributes
中的函数,如果某个条件为
True
,则包含一个类:

div
    [ classList
        [ (containerClassName, not (String.isEmpty containerClassName))
        ]
    ]
    []