如何在 React 中放弃输入按 ESC 的更改?
How to discard changes on Input pressing ESC in React?
我正在尝试制作一个具有保持状态值的输入。当我写东西并按 ENTER 时,我想保存状态中的值,确认并发送该值(默认情况下我有 console.log)。并且有效。
但是我需要做第二个功能。当我写东西并按 ESC 时,我想放弃更改并返回到以前的值。所以我的意思是,如果输入的值为“JAVA”,我写“SCRIPT”并按 ESC,我的状态仍然是“JAVA”。
这是我现在的一段代码。
import React, { Component } from "react";
import "./styles.css";
class App extends Component {
constructor(props) {
super(props);
this.state = {
name: ""
};
this.handleChange = this.handleChange.bind(this);
this.handleKeyDown = this.handleKeyDown.bind(this);
}
componentDidMount() {
const value = "Name";
this.setState({ name: value });
}
handleKeyDown = (e) => {
if (e.keyCode === 13) {
this.onSendName();
}
if (e.keyCode === 27) {
//display old value without any changes
}
};
onSendName = () => {
const { name } = this.state;
console.log("Enter", name);
};
handleChange = (e) => {
this.setState({ name: e.target.value });
};
render() {
const { name } = this.state;
return (
<div className="App">
<input
value={name}
onChange={this.handleChange}
onKeyDown={this.handleKeyDown}
/>
<div>My state: {name}</div>
</div>
);
}
}
export default App;
这是sandbox
我想我应该在状态中添加额外的值并保留我的名字直到更改,如果我按 ESC 我可以显示它。我什至尝试过但失败了。
小伙伴们有遇到类似的问题吗?或者你以前在 SO 上看到过类似的东西吗?我发现了一些清除输入值的情况,但我觉得没用。
请提供帮助。
我会做的是让您想要恢复的文本保持原样。单击输入时,将 revertValue 的值设置为 this.state.name。单击 esc 时,将 this.state.name 设置为 revertValue。工作样本:https://codesandbox.io/s/competent-lumiere-ubq68?file=/src/App.js
我正在尝试制作一个具有保持状态值的输入。当我写东西并按 ENTER 时,我想保存状态中的值,确认并发送该值(默认情况下我有 console.log)。并且有效。
但是我需要做第二个功能。当我写东西并按 ESC 时,我想放弃更改并返回到以前的值。所以我的意思是,如果输入的值为“JAVA”,我写“SCRIPT”并按 ESC,我的状态仍然是“JAVA”。
这是我现在的一段代码。
import React, { Component } from "react";
import "./styles.css";
class App extends Component {
constructor(props) {
super(props);
this.state = {
name: ""
};
this.handleChange = this.handleChange.bind(this);
this.handleKeyDown = this.handleKeyDown.bind(this);
}
componentDidMount() {
const value = "Name";
this.setState({ name: value });
}
handleKeyDown = (e) => {
if (e.keyCode === 13) {
this.onSendName();
}
if (e.keyCode === 27) {
//display old value without any changes
}
};
onSendName = () => {
const { name } = this.state;
console.log("Enter", name);
};
handleChange = (e) => {
this.setState({ name: e.target.value });
};
render() {
const { name } = this.state;
return (
<div className="App">
<input
value={name}
onChange={this.handleChange}
onKeyDown={this.handleKeyDown}
/>
<div>My state: {name}</div>
</div>
);
}
}
export default App;
这是sandbox
我想我应该在状态中添加额外的值并保留我的名字直到更改,如果我按 ESC 我可以显示它。我什至尝试过但失败了。
小伙伴们有遇到类似的问题吗?或者你以前在 SO 上看到过类似的东西吗?我发现了一些清除输入值的情况,但我觉得没用。
请提供帮助。
我会做的是让您想要恢复的文本保持原样。单击输入时,将 revertValue 的值设置为 this.state.name。单击 esc 时,将 this.state.name 设置为 revertValue。工作样本:https://codesandbox.io/s/competent-lumiere-ubq68?file=/src/App.js