This page covers Elm 0.18

ペイロードを含むメッセージ

メッセージにペイロードを含めて送ることができます:

module Main exposing (..)

import Html exposing (Html, button, div, text, program)
import Html.Events exposing (onClick)


-- モデル


type alias Model =
    Int


init : ( Model, Cmd Msg )
init =
    ( 0, Cmd.none )


-- メッセージ


type Msg
    = Increment Int



-- ビュー


view : Model -> Html Msg
view model =
    div []
        [ button [ onClick (Increment 2) ] [ text "+" ]
        , text (toString model)
        ]


-- 更新


update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
    case msg of
        Increment howMuch ->
            ( model + howMuch, Cmd.none )



-- サブスクリプション(購読)


subscriptions : Model -> Sub Msg
subscriptions model =
    Sub.none



-- MAIN


main : Program Never Model Msg
main =
    program
        { init = init
        , view = view
        , update = update
        , subscriptions = subscriptions
        }

Incrementメッセージが整数を必要とすることに注意してください:

type Msg
    = Increment Int

次に、view内でペイロードでメッセージをトリガーします。

onClick (Increment 2)

そして最後にupdateでは、パターンマッチングを使用してペイロードを抽出します。

update msg model =
    case msg of
        Increment howMuch ->
            ( model + howMuch, Cmd.none )

results matching ""

    No results matching ""