javascript - 将“输入”键事件转换为空字符串或反应中的空值
问题描述
如何在反应中将“Enter”键事件转换为空格或空字符串('')?
this.state = {
ip: ''
};
inputChange = (e) => {
this.setState({ ip: e.target.value });
};
render() {
return(
<>
<textarea
onChange={this.inputChange}
value={this.state.ip}
placeholder='Enter here'
></textarea>
<button>Enter</button>
</>
)
}
在文本区域输入值并单击提交按钮后,我的输出如下所示:
嗨↵我是人类
所需输出:
你好我是人类
编辑:如果我们点击回车,它应该转到文本区域的下一行。
解决方案
您可以将 Regex 和.replace用于问题的第一部分。
编辑:你问题的第二部分并不像我想的那样容易,而且我们的逻辑完全不起作用,所以你可以看到我们应该使用addEventListener
on keyup
,然后使用来自事件的信息,我们可以将字符添加到我们的输入中。
奖励:单击按钮后,我确实使用 ref 在 Textarea 内聚焦Enter
以获得更好的用户体验!
class App extends React.Component {
state = {
ip: ''
};
inputRef = React.createRef()
componentDidMount(){
document.addEventListener("keyup", this.keyboardUp);
}
componentWillUnmount() {
document.removeEventListener("keyup", this.keyboardUp);
}
keyboardUp = (e) => {
if (e.key === 'Enter' || e.keyCode === 13) {
e.preventDefault()
console.log(e.key)
this.setState(prev => ({ ip: prev.ip + ' ' }));
}else{
this.setState(prev => ({ ip: prev.ip + e.key }));
}
}
enterHandler = () => {
this.setState(prev => ({ ip: prev.ip + '\n' }));
this.inputRef.current.focus();
}
render() {
return(
<div>
<textarea
ref={this.inputRef}
placeholder='Enter here'
value={this.state.ip}
/>
<button onClick={this.enterHandler}>Enter</button>
</div>
)
}
}
ReactDOM.render(<App />, document.getElementById("react"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.4/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.4/umd/react-dom.production.min.js"></script>
<div id="react"></div>
推荐阅读
- c++ - 所有的 C++ 头文件都是一个类吗?
- wordpress - Wordpress WooCommerce:垃圾/删除产品操作
- python - 如何在 django 中保存一个 html 文件?
- libgit2 - 如何通过在 libgit2 中创建内存索引来提交文件?
- django - Django - 获取的外键在上传页面中显示为下拉列表。如何显示最后输入的数据?
- bazel - Google Cloud Build - 一次替换中的多个值?
- django - 如何验证用作外键的对象
- jenkins - Jenkins 在 AWS ec2-instance 上运行,github 无法向其发送 webhook
- java - 在 orElse 子句中使用 setter 设置可选嵌套对象的默认值
- python - Python无法将参数从特征文件传递到黄瓜中的步骤定义