This page covers Elm 0.18
데이터를 포함하는 메시지 (Messages with payload)
메시지에 데이터를 포함할 수 있습니다:
module Main exposing (..)
import Html exposing (Html, button, div, text, program)
import Html.Events exposing (onClick)
-- MODEL
type alias Model =
Int
init : ( Model, Cmd Msg )
init =
( 0, Cmd.none )
-- MESSAGES
type Msg
= Increment Int
-- VIEW
view : Model -> Html Msg
view model =
div []
[ button [ onClick (Increment 2) ] [ text "+" ]
, text (toString model)
]
-- UPDATE
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
case msg of
Increment howMuch ->
( model + howMuch, Cmd.none )
-- SUBSCRIPTIONS
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
뷰에서도 데이터를 전달하여 메시지를 발생시킵니다:
onClick (Increment 2)
마지막으로 update 에서는 패턴 매칭 으로 데이터를 뽑아냅니다:
update msg model =
case msg of
Increment howMuch ->
( model + howMuch, Cmd.none )