問題はHopではなく、Elm内で親子通信がどのように機能するかを理解しています。軽く言うと、あなたはこのタイプのコミュニケーションをいつ、何のために使うかを注意する必要がありますが、私の場合は、Brian ThicksとAlex Lewで、いくつかの良いブログ投稿を読んでいます。特に私の使用事例ではAlexのポストが典型的です。
私がしたことは、次のとおりです。ルーティングするメッセージの種類に別の更新ステートメントを追加しました。これは最善の実装ではなく、Alexがトランスレータのパターンについて説明したように、よりエレガントに行うことができます。
update msg model =
case msg of
NavigateTo path ->
let
command =
Hop.outputFromPath hopConfig path
|> Navigation.newUrl
in
(model, command)
SetQuery query ->
let
command =
model.address
|> Hop.setQuery query
|> Hop.output hopConfig
|> Navigation.newUrl
in
(model, command)
ExampleMsg InterestingMsg exampleInteger ->
update (NavigateTo "<path here>") model --Update model in let-statement
ExampleMsg subMsg ->
let
(updatedExampleModel, pageCmd) =
Page.Example.State.update subMsg model.exampleModel
in
({ model | exampleModel = updatedExampleModel }, Cmd.map ExampleMsg pageCmd)
もっと情報/コードを共有できますか?メイン/アプリの外をナビゲートしている場合は、あなたのelmアプリの外にナビゲートしようとしていますか?あなたは "タイプを台無しにする"ことはどういう意味ですか? – wintvelt
@wintvelt更新機能がどのように機能するのか、そしてElmで正確にできることを混乱させることは大きなブレークポイントでした。私は一時的にどのように修正したのかという例で自分の質問に自己回答しました。 – DevNebulae