Отдельные проблемы с сообщениями
Я пытаюсь создать общий модал, который принимает в качестве параметров текст для отображения и событие для отправки на onClick
кнопки подтверждения.
Есть кнопка отмены, которая разделяет скрытую функциональность с кнопкой подтверждения.
Поэтому я попытался отправить 2 события на onClick
принять. Один для логики принятия и один для логики сокрытия. И это не работает, только первое событие работает.
Я попробовал другую стратегию, скрытое событие может иметь событие OnHideModal (Maybe Msg)
поэтому модальное объединяет оба события до принятия и OnHide
скрывает модальное и отправляет внутреннее событие для продолжения обработки. Это кажется мне слишком тяжелым, потому что если у вас есть 3 или более логических событий, все ваши события должны иметь другой Maybe Msg
, И у меня есть трудности с Cmd Msg
с внутренними событиями.
Кажется, люди советуют сделать HideAndLogic
событие, но это привело бы к большому количеству копирования и вставки скрывающего кода, по одному для каждой логики. Кроме того, логика будет связана с логикой сокрытия, которая усложнит понимание. И если я хочу отправить событие для логики, ничего не скрывая, мне нужно будет сделать другое событие, которое копирует половину логики первого. Это идет вразрез с хорошей практикой базового программирования, поэтому я думаю, что некоторые люди, возможно, нашли лучший способ. Способ, позволяющий по-настоящему разделить эти отдельные логики даже в событиях-прародителях.
Используя вяз 0,18
1 ответ
Я думаю, ты делаешь это слишком сложным. Тебе нужно:
viewModal : msg -> msg -> Html msg
viewModal acceptMsg cancelMsg =
div [] [ ... button [onclick acceptMsg] ...
... button [onclick cancelMsg] ...
]
Затем ваша основная модель нуждается в shouldShowModal : Bool
или каким-либо другим способом решить, должен ли он показывать модал.
Модал вызовет сообщение, которое вы будете обрабатывать в цикле событий.