如何在使用键 "Enter" 提交按钮时仅 运行 起作用 - React Js
How to only run function when button is submitted with key "Enter" - React Js
请原谅愚蠢的标题:)
我有一个按钮,单击它会运行一个名为 restart
的函数,该函数只是重置状态。我想让这个按钮易于访问,所以当您按下选项卡时,该按钮会突出显示,提示您按回车键或单击它。
基本代码
class Home extends Component{
restart(){
this.setState({popup:false,finished:true,started:false,userInput:""})
}
render(){
return(
<div>
<button className="btn btn-dark buttons" onClick={this.restart.bind(this)}>Restart</button>
</div>
)
}
点击按钮一切正常,但是当按下Enter
时,页面会重新加载,这是非常有害的。
当使用 Enter
键提交按钮时,我如何才能禁用此重新加载,并且仍然调用 restart
方法。
最简单的方法是使用 form
并在 onSubmit
事件上调用您的 restart
方法。这样键盘用户也可以访问它。不要忘记调用 event.preventDefault()
不要重新加载页面。
查看下面的演示:
class Home extends React.Component {
constructor(props) {
super(props);
this.state = { popup: true, finished: false, started: true, userInput: '' };
this.restart = this.restart.bind(this);
}
restart(e) {
// make sure you don't reload the page
e.preventDefault();
this.setState({
popup: false,
finished: true,
started: false,
userInput: '',
});
}
render() {
return (
<form onSubmit={this.restart}>
<button className="btn btn-dark buttons" type="submit">
Restart
</button>
<pre>
{JSON.stringify(this.state, null, 2)}
</pre>
</form>
);
}
}
ReactDOM.render(<Home />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script>
<div id="root"></div>
请原谅愚蠢的标题:)
我有一个按钮,单击它会运行一个名为 restart
的函数,该函数只是重置状态。我想让这个按钮易于访问,所以当您按下选项卡时,该按钮会突出显示,提示您按回车键或单击它。
基本代码
class Home extends Component{
restart(){
this.setState({popup:false,finished:true,started:false,userInput:""})
}
render(){
return(
<div>
<button className="btn btn-dark buttons" onClick={this.restart.bind(this)}>Restart</button>
</div>
)
}
点击按钮一切正常,但是当按下Enter
时,页面会重新加载,这是非常有害的。
当使用 Enter
键提交按钮时,我如何才能禁用此重新加载,并且仍然调用 restart
方法。
最简单的方法是使用 form
并在 onSubmit
事件上调用您的 restart
方法。这样键盘用户也可以访问它。不要忘记调用 event.preventDefault()
不要重新加载页面。
查看下面的演示:
class Home extends React.Component {
constructor(props) {
super(props);
this.state = { popup: true, finished: false, started: true, userInput: '' };
this.restart = this.restart.bind(this);
}
restart(e) {
// make sure you don't reload the page
e.preventDefault();
this.setState({
popup: false,
finished: true,
started: false,
userInput: '',
});
}
render() {
return (
<form onSubmit={this.restart}>
<button className="btn btn-dark buttons" type="submit">
Restart
</button>
<pre>
{JSON.stringify(this.state, null, 2)}
</pre>
</form>
);
}
}
ReactDOM.render(<Home />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script>
<div id="root"></div>