0
Elm(0.18)のMsg
の値をさまざまな種類に分割しようとしています。私はそれがタイピングのこの種に適合したいと思います:elmの入力に余分な変数を持つメッセージ
type MsgSession
= LogIn
| LogOut
type MsgSettings
= SetUsername String
= SetPassword String
type Msg
= SessionMsg MsgSession
| SettingsMsg MsgSettings
...
私の更新機能は、次のようになります。私は子供が同様に更新定義する必要があることを意味
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
SessionMsg sessionMsg ->
sessionUpdate sessionMsg model
SettingsMsg settingsMsg ->
settingsUpdate settingsMsg model
...
を...。 ..
sessionUpdate : MsgSession -> Model -> (Model, Cmd Msg)
sessionUpdate msg model =
case msg of
LogIn ->
-- do stuff
LogOut ->
-- do stuff
マイログアウトイベントは次のようになりますし、正常に動作します:
button [onClick (SessionMsg LogOut)] [text "Log Out"]
しかし、イベントに関連する変数があれば、それは機能しません。私はsettingsUpdate
のための同様のセットアップがあります。
settingsUpdate : MsgSettings -> Model -> (Model, Cmd Msg)
settingsUpdate msg model =
case msg of
SetUsername string ->
...
SetPassword string ->
...
をしかし、私は、変数として送信するonInput
を取得することはできません。たとえば、このコード
input [onInput SettingsMsg SetUsername] []
はこのエラーを得られます。
Function `onInput` is expecting 1 argument, but was given 2.
483| onInput SettingsMsg SetUsername
括弧も動作しません。私はこの仕事をするためにonInput
に合格しなければならないのは何
input [onInput (SettingsMsg SetUsername)] []
利回り
The argument to function `SettingsMsg` is causing a mismatch.
483| SettingsMsg SetUsername)
^^^^^^^^^^^
Function `SettingsMsg` is expecting the argument to be:
MsgSettings
But it is:
String -> MsgSettings
?