为什么Platform.Sub不公开任何过滤功能?像filterMap : (a -> Maybe msg) -> Sub a -> Sub msg
这样的函数可以非常方便地监听某些键上的事件而不是其他键上的事件。
这个功能可以用另一种方式实现,这是一个好主意吗?
答案 0 :(得分:4)
虽然我无法说明其缺席(filterMap
当然看似合理),但您可以通过在update
函数之前执行过滤器/地图并映射到{{}来解决此问题过滤器返回NoOp
时发出的消息:
Nothing
import Maybe
yourFilterFunction : Msg -> Maybe Msg
yourFilterFunction = ...
main =
Html.program
{ init = init
, view = view
, update = update << Maybe.withDefault NoOp << yourFilterFunction
, subscriptions = subscriptions
}
函数中的NoOp
个案只会返回update
。