/ / ElmのRemoteDataパッケージから「読み込み中」ステータスを取得-web、elm

ElmのRemoteDataパッケージ - web、elmから「読み込み中」ステータスを取得する

これが私が考えることができる最も単純なElmプログラムです。 RemoteData パッケージ サーバーの応答をより適切にモデル化するには:

module App exposing (..)

import Http exposing (..)
import Html exposing (..)
import Html.Events exposing (..)
import RemoteData exposing (..)
import Debug exposing (..)

type alias Model = WebData String

init : (Model, Cmd Msg)
init = (RemoteData.NotAsked, Cmd.none)

type Msg = Ask | OnUpdate (WebData String)

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


update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
case msg of
OnUpdate response -> (log (toString response) response, Cmd.none)
Ask -> (model,
Http.getString "https://api.ipify.org"
|> RemoteData.sendRequest
|> Cmd.map OnUpdate)

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

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

パッケージには次の状態がありますが NotAsked, Loading, Success そして Failure、私は決して見ません Loading 状態。このパッケージはいつこのステータスを送信し、どのように使用しますか?

回答:

回答№1は4

実際には、コマンドを送信するときにモデルに読み込みステータスを設定するのはあなたの仕事です。

update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
case msg of
OnUpdate response -> (log (toString response) response, Cmd.none)
Ask -> (RemoteData.Loading,
Http.getString "https://api.ipify.org"
|> RemoteData.sendRequest
|> Cmd.map OnUpdate)

こちらの例も参照してください。 https://github.com/krisajenkins/remotedata/blob/4.3.0/src/RemoteData.elm#L72