2017-08-22 4 views
0

どのように実装し、Cmdメッセージを返すのですか?どのように実装し、Cmdメッセージを返すのですか?

たとえば、次の行がCmdをメッセージを生成します。

Http.send msg request 

これは、次の関数で使われています:

tryRegister : Form -> (Result Http.Error JsonProfile -> msg) -> Cmd msg 
tryRegister form msg = 
    let 
     registerUrl = 
      "http://localhost:5000/register" 

     body = 
      encode form |> Http.jsonBody 

     request = 
      Http.post registerUrl body decoder 
    in 
     Http.send msg request 

私は私の中に手のコードに同様の機能をしようとしていますTestAPI:

tryRegister : Form -> (Result Http.Error JsonProfile -> msg) -> Cmd msg 
tryRegister form msg = 
    Cmd.none 

上記コードコンパウンドiles。しかし、Cmd.none以外のCmd Msgを返す関数を実装する方法は私には分かりません。

付録:

type Msg 
    = 
    ... 
    | Submit 
    | Response (Result Http.Error JsonProfile) 

update : Msg -> Form -> (Form, Cmd Msg) 
update msg model = 
    case msg of 
     ... 
     Submit -> 
      (model, runtime.tryRegister model Response) 

Source code on GitHub

+0

はあなたのコードを熟読しませんでしたが、あなたは、あなたが「何を達成することができるかもしれませんコマンドなしでやろうとしている:https://medium.com/elm-shorts/how-to-turn-a-msg-into-a-cmd-msg-in-elm-5dd095175d84 – SwiftsNamesake

答えて

1

編集

オリジナルの答えはコンパイルされ、Cmd.none上でマッピングを提案し、テストのための機能をからかったときに潜在的に有用である可能性がありますが、実際にはエルムのアーキテクチャで別のupdateサイクルを強制しようとしている場合、あなたsendファンクションdescribed hereに概説されているように、Taskに変換する必要があります。

send : msg -> Cmd msg 
send msg = 
    Task.succeed msg 
     |> Task.perform identity 

@SwiftsNamesakeは、前述したように、ほとんどの場合、これは必要ではなく、対象の全体のブログ記事はworth a readです。

オリジナル回答

あなたはどのCmdに変更しCmd.mapCmd.none上を使用することができます。

Cmd.map (always Submit) Cmd.none 
関連する問題