我正在做一个 React 编码挑战,需要在 KeyUp 上更新一个值。我最初将其设置为更新 onChange 但测试需要 onKeyUp 所以我试图将其更改为那个,但我的字段不再更新并且我无法在文本区域中键入任何内容。
class MarkdownApp extends React.Component {
constructor(props) {
super(props);
this.state = {
value: ''
};
this.handleKeyUp = this.handleKeyUp.bind(this);
}
handleKeyUp(event) {
this.setState({ value: event.target.value })
}
render() {
return (
<form>
<label>
Enter your markdown here:
<br />
<textarea value={this.state.value} onKeyUp={this.handleKeyUp} id='editor' />
<br />
</label>
<label>
Your markup will be previewed here:
<p id='preview'>{marked(this.state.value)}</p>
</label>
</form>
);
}
}
ReactDOM.render(
<MarkdownApp />,
document.getElementById('root')
);
就像我说的,当它是 onChange 并且我的函数是 handleChange 时它工作得很好,但是因为我切换它我不能输入任何东西。
原文由 Cdhippen 发布,翻译遵循 CC BY-SA 4.0 许可协议
由于事件发生在文本框的实际值更改之前,
event.target.value
的结果是一个空字符串。使用空字符串设置状态,清除文本框。您需要从事件中获取按下的键值,并将其添加到现有的
state.value
。注意:我已经从演示中删除了
marked