我正在考虑添加一个很好的方法来绑定到键盘事件,像下面这样的东西真的很棒:
Html.input [
prop.onKeyUp(key.enter, fun _ -> dispatch Login)
prop.onChange (UsernameChanged >> dispatch)
prop.valueOrDefault state.Username
]
Html.input [
prop.onKeyUp [ key.enter, fun _ -> dispatch Login ]
prop.onChange (UsernameChanged >> dispatch)
prop.valueOrDefault state.Username
]
Html.input [
prop.onKeyUp(dispatch, [ key.enter, Login; key.esc, Reset ])
prop.onChange (UsernameChanged >> dispatch)
prop.valueOrDefault state.Username
]
这是值得一试的! 非常欢迎 PR,如果您想尝试一下,请告诉我和其他贡献者
哦,太好了,我喜欢你的想法!
恕我直言Key
读起来比Keys
,即Key.Enter
与Keys.Enter
。
@cmeeren你是对的,为了保持一致,我们一直使用单数词表示模块prop
, style
和key
(小写)将是一个自然的补充👍
是的,虽然我注意到我们有colors
和现在fonts
... 需要考虑改变的东西。 :)
@cmeeren在 #95 提出了关于colors
和fonts
场景 2.2 与其他事件处理程序不一致,因为这意味着我们也应该实现onClick(dispatch, Login)
并且很可能我们不会(当然欢迎反馈和讨论)
至于场景 1 和场景 2,那里的事件处理程序应该接受KeyboardEvent
作为 lambda 的参数(与键一起)。 即键盘事件将采取重载:
KeyboardEvent -> unit // default
IKeyboardKey * (KeyboardEvent -> unit) // scenario 1
(IKeyboardKey * (KeyboardEvent -> unit)) list // scenario 2
在我看来很好。 不过,证据就在布丁里。 来看看使用感受如何。 :)
键盘优点补充说:
// Enter only
prop.onKeyUp (key.enter, fun _ -> dispatch Login)
// Enter + CTRL
prop.onKeyUp (key.ctrl(key.enter), fun _ -> dispatch Login)
// Enter + SHIFT
prop.onKeyUp (key.shift(key.enter), fun _ -> dispatch Login)
// Enter + CTRL + SHIFT
prop.onKeyUp (key.ctrlAndShift(key.enter), fun _ -> dispatch Login)