使用 react-keydown 捕获内部组件中的 keydown 事件
catch keydown events in inner components using react-keydown
我正在使用 react-keydown 库向我的应用程序添加键盘快捷键,但无法在内部对话框组件中使用它。对话框并不总是可见,但我希望按键在可见时起作用。
我正在使用 event_handlers.js._onKeyDown(event) 方法,但缺少值:fn = undefined,而 fn 应该包含装饰函数。
我的组件看起来像:
<Container>
<MyDialog>
<material-ui-dialog/>
</MyDialog>
</Container>
Container.js:
import keydown from 'react-keydown'
class Container extends Component {
@keydown('enter')
someMethod1(){
// working
}
render() {
return (
<div>
<MyDialog/>
</div>
)
}
}
MyDialog.js:
import keydown, {keydownScoped} from 'react-keydown'
@keydown('enter')
class MyDialog extends Component {
@keydownScoped('enter')
someMethod3(){
// not working
}
}
根据您在评论中的描述,问题似乎是您的 Dialog 组件安装后失去焦点,因此其中的任何键绑定都不会收到击键。您有几个选择:
1) 通过装饰作为 Dialog 组件的祖先且不会失去焦点的组件来扩展键绑定的范围。在极端情况下,这可能是您应用程序的根组件。然后用keydownScoped
修饰想要的Dialog组件方法。在该方法中检查道具以确保当前对话框处于活动状态。
2) 按照 https://github.com/glortho/react-keydown/issues/28.
的方式以编程方式激活您的对话框键绑定
希望对您有所帮助!
我正在使用 react-keydown 库向我的应用程序添加键盘快捷键,但无法在内部对话框组件中使用它。对话框并不总是可见,但我希望按键在可见时起作用。 我正在使用 event_handlers.js._onKeyDown(event) 方法,但缺少值:fn = undefined,而 fn 应该包含装饰函数。
我的组件看起来像:
<Container>
<MyDialog>
<material-ui-dialog/>
</MyDialog>
</Container>
Container.js:
import keydown from 'react-keydown'
class Container extends Component {
@keydown('enter')
someMethod1(){
// working
}
render() {
return (
<div>
<MyDialog/>
</div>
)
}
}
MyDialog.js:
import keydown, {keydownScoped} from 'react-keydown'
@keydown('enter')
class MyDialog extends Component {
@keydownScoped('enter')
someMethod3(){
// not working
}
}
根据您在评论中的描述,问题似乎是您的 Dialog 组件安装后失去焦点,因此其中的任何键绑定都不会收到击键。您有几个选择:
1) 通过装饰作为 Dialog 组件的祖先且不会失去焦点的组件来扩展键绑定的范围。在极端情况下,这可能是您应用程序的根组件。然后用keydownScoped
修饰想要的Dialog组件方法。在该方法中检查道具以确保当前对话框处于活动状态。
2) 按照 https://github.com/glortho/react-keydown/issues/28.
的方式以编程方式激活您的对话框键绑定希望对您有所帮助!