首页 > 解决方案 > React.js 只读取第一个 if 语句

问题描述

我正在制作一个文本框,可以在输入时处理单击或在空间单击时将文本更改为 SVG。但是,react 只考虑第一个 if 语句,使用 else 有效,但 else if 被完全忽略。

文本框代码:

<input type="text" id="textbox" contentEditable="true" className="grinputbox"
    onChange={(e) => {setInput(e.target.value)}}
    onKeyPress={twoCalls}
/>

TwoCalls 函数:

const twoCalls = (e) => {
    if (e.key === "Enter") {
        console.log("enter");
        handleClick()
    } else if (e.key === "Space") {
        console.log("space");
        toSVG()
    }
}

它确实在按回车时输入控制台日志,但是在按空格时没有空格

标签: javascriptreactjs

解决方案


没有这样的key属性"Space"。检查用户按下空格键的值是文字空格字符:" "。您可以直接从https://keycode.info/(按空格键)或间接从MDN文档中找到它。(上面写着“如果按下的键具有打印表示,则返回值是包含键的可打印表示的非空Unicode字符串。”)

所以简而言之,更换

else if (e.key === "Space" )

else if (e.key === " " )

推荐阅读