Отдельные проблемы с сообщениями

Я пытаюсь создать общий модал, который принимает в качестве параметров текст для отображения и событие для отправки на 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или каким-либо другим способом решить, должен ли он показывать модал.
Модал вызовет сообщение, которое вы будете обрабатывать в цикле событий.

Другие вопросы по тегам