考虑这个片段(游乐场):
<textarea onInput={event => {
console.log(event.key) // TypeScript error and undefined at runtime
setState(event.currentTarget.value)
}} />
我想检测用户是否按下了 Enter 键或 Shift-Enter 键。
浏览器本机事件具有key
和shiftKey
属性,而 Solid 事件中没有这些属性。我也找不到与 React 的event.nativeEvent
属性相当的东西。
我真的需要使用useKeyDownEvent吗?onInput
不过,当在文本区域内使用该方法时,该方法似乎会遇到竞争条件......
<input>
当、<select>
或 元素的值<textarea>
发生更改时,将触发 input 事件。Solid 不会覆盖事件,因此您关于缺少属性的事件对象的说法不准确。您应该使用 keydown 或 keyup 事件:
https://developer.mozilla.org/en-US/docs/Web/API/Element/keydown_event
不存在竞争条件,但浏览器在触发事件时会遵守特定的顺序。与按键相关的事件发生在更改值之前,输入事件发生在更改值之后。