我们需要管理Elm中单选按钮的状态吗?

我们需要管理Elm中单选按钮的状态吗?,elm,Elm,我指的是这个例子。我看不到任何地方可以管理按钮的状态 在我自己的小榆树项目中,我需要做如下事情 label [] [ input [ type_ "radio" , checked (model.choosenSize == size) , onClick (SetSize size) ] [] , text (sizeToString size) ] 如果不管理checked属性,单击该属性后,所有单选按

我指的是这个例子。我看不到任何地方可以管理按钮的状态

在我自己的小榆树项目中,我需要做如下事情

label []
    [ input
        [ type_ "radio"
        , checked (model.choosenSize == size)
        , onClick (SetSize size)
        ] []
    , text (sizeToString size)
    ]
如果不管理
checked
属性,单击该属性后,所有单选按钮都将保持选中状态


那么,这个例子的魔力是什么呢?

您所指的例子非常简单。它不显式地管理按钮的状态。相反,它们的状态由浏览器管理。当然,在实际应用程序中,您最好显式地管理它。比如:

view : Model -> Html Msg
view model =
  div []
    [ fieldset []
        [ radio "Small" (model.fontSize == Small) (SwitchTo Small)
        , radio "Medium" (model.fontSize == Medium) (SwitchTo Medium)
        , radio "Large" (model.fontSize == Large) (SwitchTo Large)
        ]
    , Markdown.toHtml [ sizeToStyle model.fontSize ] model.content
    ]


radio : String -> Bool -> msg -> Html msg
radio value isChecked msg =
  label
    [ style [("padding", "20px")]
    ]
    [ input [ type_ "radio", checked isChecked, name "font-size", onClick msg ] []
    , text value
    ]

(我在
radio
中添加了
Bool
参数)

您所指的示例非常简单。它不显式地管理按钮的状态。相反,它们的状态由浏览器管理。当然,在实际应用程序中,您最好显式地管理它。比如:

view : Model -> Html Msg
view model =
  div []
    [ fieldset []
        [ radio "Small" (model.fontSize == Small) (SwitchTo Small)
        , radio "Medium" (model.fontSize == Medium) (SwitchTo Medium)
        , radio "Large" (model.fontSize == Large) (SwitchTo Large)
        ]
    , Markdown.toHtml [ sizeToStyle model.fontSize ] model.content
    ]


radio : String -> Bool -> msg -> Html msg
radio value isChecked msg =
  label
    [ style [("padding", "20px")]
    ]
    [ input [ type_ "radio", checked isChecked, name "font-size", onClick msg ] []
    , text value
    ]

(我在
无线电
中添加了
Bool
参数)

如果向所有“分组”无线电元素添加
名称
属性,则web浏览器一次只允许选择一个。通过管理模型中的“已检查”状态,可以在Elm中实现同样的效果。但是,如果您不在Elm中管理它们的状态,Elm将无法“读取”当前处于活动状态的元素。如果您向所有“分组”无线电元素添加
name
属性,则web浏览器一次只允许选择一个。通过管理模型中的“已检查”状态,可以在Elm中实现同样的效果。但是,如果您不在Elm中管理它们的状态,Elm将无法“读取”当前处于活动状态的状态。