React ES6 如何绑定键盘事件?

发布于 2022-09-03 12:20:34 字数 894 浏览 68 评论 0

1.出现的问题
在使用React时需要给页面绑定一个键盘按下的事件,绑定后按下键盘并没有反应。

2.相关代码
clipboard.png
该组件是核心组件,这里的renturn()是在render()方法中。出现的问题即onKeyPress事件,我将按键事件绑定在了组件最外层的section上。

clipboard.png
上图是事件处理函数,我输出到控制台检测发现并没有打印出该字符串。

clipboard.png
我的事件现在就绑定在.player这个section上

3.报错信息
没有任何的报错提示。

4.我尝试的解决办法
我尝试了把onKeyPress改成了onClick, 事件则可以正常的通过点击触发。这说明程序写法没有问题,而且我其他地方也写了很多其他时间的绑定都没问题。
又查了官方文档,是支持键盘事件onKeyDown onKeyPress onKeyUp的。

在写原生js我都是把键盘事件绑定在document上,但不知道react中如何解决?

不存在其他的按键事件,事件应该不会被截取吧。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

ペ泪落弦音 2022-09-10 12:20:34

请在componentDidMount方法中绑定事件 componentWillUnmount方法中解绑事件。
React通过ref拿到原始DOM通过addEventListener的方法监听事件

提笔书几行 2022-09-10 12:20:34

我也遇到了同类问题,请问你的问题已经解决了么?可否讲解一下

茶色山野 2022-09-10 12:20:34
 render() {
        return (
            <input
                className="search-input" 
                type="text" 
                placeholder="请输入关键字" 
                onChange={this.ChangeHandle.bind(this)}
                onKeyUp={this.KeyUpHandle.bind(this)}
                value={this.state.value}/>
        )
    }
   
    KeyUpHandle(e) {
        // 监控 enter 事件
        if (e.keyCode !== 13) {
            return
        }
        this.props.enterHandle(e.target.value)
    }
笑红尘 2022-09-10 12:20:34

在非表单元素绑定键盘事件,需要设置tabIndex属性,比如设置tabIndex="0"

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文