使用reflex-dom
我发现自己编写了以下代码:
dynShowNumbers <- holdDyn False $ catMaybes $ updated dynMaybeShowNumbers
wheredynMaybeShowNumbers :: Dynamic t (Maybe Bool)
触发,每当一个键被按下或释放,但它只有一个值不等于Nothing
,当两个特定键之一改变状态(即按下或未按下)时。Just False
它在两个键之一被释放时触发。
原因是我展示了一个虚拟键盘,它通常取决于按下或释放键的任何事件。对于dynMaybeShowNumbers
,我只是过滤掉了需要按住以显示虚拟小键盘的两个相关键。
我可以轻松编写dynShowNumbers :: Dynamic t Bool
不依赖于Dynamic t (Maybe Bool)
上述内容的更简单的代码。
然而:
在这种情况下,每当按下任何键时,我都会被dynShowNumbers
解雇:
False---False---False------False--True---True----False----False----...
而上面的代码会导致
False-----------------------------True-----------False-------------...
对于相同的输入。
我觉得,我需要上面的代码来避免动态重新渲染我的虚拟键盘——即使没有任何变化。
但是上面的行是好的做法吗?库中是否有有效的功能(找不到)?它类似于从列表中删除重复项的任务。