是否可以使用elm-html在一个事件上发送多条消息?

是否可以使用elm-html在一个事件上发送多条消息?,第1张

概述我想在一个事件上向不同的地址发送两条消息. 我遇到的特殊情况是我有一些d出窗口,当用户点击“添加”时我想: >关闭d出窗口(消息发送到d出窗口组件) >通知父组件应该添加项目(消息发送到父组件) onClick有以下类型“地址a – > a – >属性”,似乎没有可能这样做.另一方面,似乎在实践中经常遇到这样的模式(导致多个消息的一个动作). 现在,我使用一条消息通知父母有关添加的项目,然后在更新 我想在一个事件上向不同的地址发送两条消息.
我遇到的特殊情况是我有一些d出窗口,当用户点击“添加”时我想:

>关闭d出窗口(消息发送到d出窗口组件)
>通知父组件应该添加项目(消息发送到父组件)

onClick有以下类型“地址a – > a – >属性”,似乎没有可能这样做.另一方面,似乎在实践中经常遇到这样的模式(导致多个消息的一个动作).

现在,我使用一条消息通知父母有关添加的项目,然后在更新功能更新d出窗口中显示隐藏 *** 作.

addbutton = button [onClick context.addTaskAddress model.taskDescription] [text "Add"]

然后在父级的组件更新功能中

popup = AddTaskPopup.update AddTaskPopup.HIDe model.popup
解决方法 您可以设置一个中间代理邮箱,其中包含地址和消息对的列表,然后通过单击按钮调用该邮箱.
proxy : MailBox (List (Address a,a))proxy =  mailBox []

然后你可以有一个广播信号,它监听代理邮箱并创建一堆Signal.send任务来通知其他地址.

port broadcast : Signal (Task x (List ()))port broadcast =  let    tasks = List.map (uncurry Signal.send)  in    Signal.map (Task.sequence << tasks) proxy.signal

您的onClick代码将看起来像这样,您传入地址和 *** 作对列表:

onClick proxy.address [(address,Action1),(address,Action2)]

请注意,在上面的代码中,address是指进入vIEw函数的地址,而proxy.address是指我们刚设置的代理邮箱.

这是一种适用于任意数量信号的通用解决方案.

总结

以上是内存溢出为你收集整理的是否可以使用elm-html在一个事件上发送多条消息?全部内容,希望文章能够帮你解决是否可以使用elm-html在一个事件上发送多条消息?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1127945.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存