javascript - 如何在 React.js 中进行关键事件处理?

标签 javascript reactjs

我正在使用 React.js 开发我的第一个项目,并且在关键事件处理方面遇到了一些问题。看来我正在非常精确地遵循我在网上找到的示例。有人可以看一下并告诉我他们发现了什么问题吗?

var ScreenplayElement = React.createClass({
    handleKeyPress: function(e) {
        if (e.keyCode == 13) {
            e.preventDefault();
            console.log("New action to be created");
        }
    },
    render: function () {
        var classString = this.props.type + " screenplay-el";

        return (
        <p className={classString} contentEditable onKeyPress={this.handleKeyPress}><br /></p>
        );
    }
});

最佳答案

尝试改用 KeyboardEvent.key (e.key)。请参阅 Mozilla Docs .

var ScreenplayElement = React.createClass({
    handleKeyPress: function(e) {
        if (e.key === "Enter") {
            e.preventDefault();
            console.log("New action to be created");
        }
    },
    render: function () {
        var classString = this.props.type + " screenplay-el";

        return (
        <p className={classString} contentEditable onKeyPress={this.handleKeyPress}><br />Content goes in here</p>
        );
    }
});

根据 MDN:KeyboardEvent.keyCode 已弃用。

This feature has been removed from the Web standards. Though some browsers may still support it, it is in the process of being dropped. Do not use it in old or new projects. Pages or Web apps using it may break at any time.

提示:如果您将 console.log() 消息直接放在 if 语句之前,它将立即触发。这样您就可以确定问题是出在事件处理程序还是 if 语句上:-)

关于javascript - 如何在 React.js 中进行关键事件处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32554575/

相关文章:

javascript - 我有两个组件,我想通过第一个组件中的函数将属性更改为第二个组件

reactjs - 在 react 中使用 useState 钩子(Hook)时设置后立即读取组件状态

reactjs - 如果导航到新路径则更改 react 状态

node.js - 语法错误 : Unexpected token import- Node. js

javascript - 如何保留两个或多个数组中存在的项目并返回该数组?

javascript - react 导航 V4 : Swipe on drawer does not work in Android

javascript - 为什么 jQuery 聊天机器人的这段代码不起作用?

javascript - 如何从对象构建查询字符串?

javascript - 使用具有不同本地范围的 eval()

javascript - HTML5 Canvas 油漆重画lineJoin不圆 Angular