reactjs - 按下键onKeyDown Reactjs时删除输入中的内容
问题描述
当我尝试在按下特定键后立即删除输入中的内容时,在这种情况下,它是带有 onKeyDown 的字母“t”,输入将被清除,但按下的键将保留在输入中,例如:当我在输入中键入“排序”,结果将是“t”。“t”将保留在输入值内,但我希望清除输入值,尽管当我按下字母“t”时我将“term”的状态设置为“”
state = { term: ""};
keyListener = (e) => {
if (e.key === "t") {
this.setState({ term: "" });
}
};
onInputChange = (event) => {
this.setState({ term: event.target.value });
};
render() {
return (
<div className="search-bar ui segment">
<form className="ui form">
<div className="field">
<label>Search Video</label>
<input
type="text"
value={this.state.term}
onChange={this.onInputChange}
onKeyDown={this.keyListener}
/>
</div>
</form>
</div>
);
}
解决方案
发生这种情况是因为接下来将调用 onInputChange,只需调用 e.preventDefault 来防止:
keyListener = (e) => {
if (e.key === "t") {
this.setState({ term: "" });
e.preventDefault();
}
};
推荐阅读
- batch-file - 7Zip 更好的策略,通过命令行在一个 7z 文件中压缩一个文件
- javascript - 在数组中指定的单词之后添加
- c++ - C++ Winapi - 带有拖动事件的自定义标题栏
- python-3.x - 如何在 python 中使用 xlsx writer 在现有 excel 中添加新列
- swift - Flutter 使用字符串扩展翻译应用程序,而不需要像 Swift 中那样的上下文
- spring - 如何在进行 SOAP Web 服务调用时避免转换为 JAXBElement?
- sql - SQL Server:如何将 SQL 过程的结果用作另一个存储过程的参数
- python - 另一种移动画布对象的方法?
- flutter - Dart 过时的依赖项未以红色显示
- android - 当应用程序从商店更新或首次安装在 Android 中时,如何调用特定函数?