elm git bookでは、子コンポーネントが主更新機能を介して配布され、最終的に子コンポーネントの適切な更新機能によって処理されるメッセージを生成するアーキテクチャが説明される。トランスレータパターンとこれとはどのように違うのですか?また、各パターンのユースケースは何ですか?簡単な例を示してください。elmのトランスレータパターンは何ですか?
0
A
答えて
1
update
のネストされた「コンポーネント」がある場合は常に、親が子のMsgsおよびCmdsを通過するようにする必要があります。 gitのブックoutlines this with a simple example(このコードは親であり、かつWidget
子である):
type Msg
= WidgetMsg Widget.Msg
update message model =
case message of
WidgetMsg subMsg ->
let
(updatedWidgetModel, widgetCmd) =
Widget.update subMsg model.widgetModel
in
({ model | widgetModel = updatedWidgetModel }, Cmd.map WidgetMsg widgetCmd)
上記子供がupdate
機能を持つ任意の時間が必要であろう。しかし、上記の例では、親は子メッセージが子どもに伝えられていることを知らない、または気にしません。
しかし、親が子供によって生成されたメッセージについて知る必要がある場合を考えてみましょう。たとえば、ネストされた子コンポーネントが、ゲームが失われた親と通信する必要があるゲーム。
Translator Patternは、親コンポーネントが子更新関数から返されたメッセージに反応する必要がある場合に便利です。ここでは、更新機能の基本的な構造は、リンクされた例である:それは以前update
の例のようにたくさん見えること
GameMsg internalMsg ->
let
(game_, cmd)
= Game.update internalMsg model.game
in
{ model | game = game_ } ! [ Cmd.map gameTranslator cmd ]
お知らせ。主な違いは、それよりもむしろブラインド親Msg
(唯一の子Msg
の周りに渡された最初の例の単一WidgetMsg
ことでブラインド)に直接Cmd
をマッピングされ、gameTranslator
マッピング機能を使用すると、親のいずれかにマップすることができますメッセージ。
Translator Pattern Blog Post全体を読むと役立ちます。これはElm 0.17のために書かれているので、いくつかの構文の変更がありますが、一般的な考え方はまだ成立しています。
関連する問題
- 1. elmで "Http.post"コールを行う方法は何ですか
- 2. `exposed-modules`は` elm-package.json`で何をしますか?
- 3. ElmのElmコンパイラ?
- 4. ELM言語を使い始める最良の方法は何ですか?
- 5. elm-reactorでのナビゲーション
- 6. Elmのde elm-markdown moduleの使い方は?
- 7. Elmポートからユニオンタイプを渡すには?
- 8. Elmで乱数を生成するために必要な最小限のコードは何ですか?
- 9. ELM - テーブルの行にリストの例では
- 10. elmでのリストのレンダリング方法は?
- 11. Elmでクエリパラメータを取得するには?
- 12. ElmでのXMLの解析
- 13. ElmとElm-Formの2つのフィールドを検証します
- 14. elm-webglのステンシルバッファリング
- 15. elmのDictを
- 16. elmのローカルスコープアップデート0.18
- 17. Elm:バージョン0.17で動作するURLルーターはありますか?
- 18. elm-stuffとelm-package.jsonを親ディレクトリに移動するgulp-elmのelm.init()を停止する方法はありますか?
- 19. elmではドル演算子($)がサポートされていますか?
- 20. elmのタプルをデコードする
- 21. Elmのユニットテスト作業
- 22. Elmのレコードプロパティをインクリメント
- 23. Elmの範囲式
- 24. リストのJson.Decode.Pipeline(elm 0.18)
- 25. Elmの並行性
- 26. Elmの型制約
- 27. MAPIのpine/elmコマンドラインメール?
- 28. Elm navigation preventはできませんGET
- 29. ElmをHTMLに埋め込んだelm-reactorを使用していますか?
- 30. "Program Never Model Msg"では、elmの署名はどういう意味ですか?
代わりに、 'Game.update internalMsg model.game'になります。@ChadGilbert – sjt003
良いキャッチ!はい、そうです、私はその例を修正しました。私はブログの投稿からそれを逐語的にコピーしました。 –
私はそれを読んでいただき、ありがとうございます。 – sjt003