Я боролся с тем, как организовать свой код в Elm, и после некоторого поиска в Google я нашел это .Это не так уж недавно, но я попробовал это, и результат довольно хороший, по сравнению с тем, что я имел раньше.Но, пытаясь применить это к моим состояниям, я хочу создать пустой Cmd
, просто чтобы отправить Msg
в функцию обновления «root», чтобы перейти от одного State
к другому.Это не кажется правильным, я предполагаю, что просто делаю это неправильно.
Итак, допустим, у меня есть это:
type alias Model =
{ state : State
}
type State = StateProjectList ProjectList.Types.Model
| StateProjectView ProjectView.Types.Model
type Msg = ProjectList ProjectList.Types.Msg
| ProjectView ProjectView.Types.Msg
| TransitionProjectView Project
Когда я нахожусь в StateProjectList
, мне нужночтобы иметь возможность как-то перейти на StateProjectView
, но его функция просмотра возвращает ProjectList.Types.Msg
, а не обычный Msg
.Одна из идей, которую я придумал, - создать пустой Cmd
, который будет перезванивать, используя TransitionProjectView
, что кажется неправильным.
Другая идея заключается в использовании Msg, подобного ProjectList TransitionToProjectView
и сопоставьте это сначала в функции обновления корня, хотя не уверен насчет этого долгосрочного срока.
Я видел заметку на документе Cmd.map
, в которой говорится, что если вам это нужно, вы, вероятно, делаете что-то не такК сожалению ссылка, объясняющая, что делать вместо этого, мертва.Каков будет правильный путь для перехода из одного состояния в другое, или лучшая архитектура, если все это неправильно?