Ausgehend von diesen drei Erklärungen:Gibt es in Elm eine Möglichkeit, Unionstypen zusammenzuführen? (Modularität Zweck)
type SharedMsg
= SharedAction
type Page1Msg
= Page1Action
type Page2Msg
= Page2Action
ich es eine Möglichkeit, ein Äquivalent des folgenden eines zu erhalten? Wie eine Möglichkeit, Unionstypen zu "verschmelzen"?
type Msg
= SharedAction
| Page1Action
| Page2Action
=============================
Kontext: I in eine ELM Anwendung am Aufspalten Modul pro Seite mit eigenen Ordnern.
Einige Aktionen werden freigegeben und einige Aktionen sind seitenspezifisch.
Wenn ich die Html.map
Methode zu verwenden war, habe ich das Gefühl, dass ich jede gemeinsame Aktion, die eine Seite verwendet in seiner eigenen PageMsg
Nachrichtentyp neu schreiben müsste:
type Page1Msg
= Page1Action
| SharedAction
type Msg
= Page1Msg Page1Msg
| Page2Msg Page2Msg
view : Model -> Html Msg
view =
Html.map Page1Msg (Page1View.view model)
Daher meine Gedanken an eine Verwendung Unique Msg
Typ für alle Seiten, aber Wahrung der Modularität durch Schreiben von seitenspezifischen Nachrichten in ihren eigenen Ordnern, und dann irgendwie definieren einen eindeutigen Msg
Typ durch Zusammenführen von ihnen.
Sind diese Seiten in einer Single Page App? Welche Art von geteilten Nachrichten haben Sie und wo entstehen sie? Damals, als die Elm-Community versuchte, diese Fragen herauszufinden, schrieb ich ein Stück über Medium (https://medium.com/@alex.lew/the-translator-pattern-a-model-for-child-to- parent-communication-in-elm-f4bfaa1d3f98) über meine Lösung für das Problem von Page1 und Page2 beide in der Lage sein, einige gemeinsame Nachricht in der "übergeordneten" Update-Funktion auslösen. Aber das Denken der Gemeinschaft hat sich seitdem weiterentwickelt, und wenn Sie die Besonderheiten Ihres Falles kennen, könnte dies eine bessere Lösung sein! –
(Ich sollte erwähnen, dass es keine Möglichkeit gibt, Union-Typen zu verschmelzen, wie Sie es versuchen, ohne neue Tags/Konstruktoren zu erstellen.) –
1. Danke für die Antwort über die Verschmelzung von Typen und 2. Wow super intelligente Übersetzer Muster, ich Ich werde in diese Richtung graben! Die freigegebenen Nachrichten, an die ich gedacht habe, sind von der gleichen Art wie die, die Sie erwähnen: Zeigen Sie einen globalen App-Lade-Spinner an, laden Sie geteilte Cross-Seiten-Daten ... – AlexHv