2
<input
id='block-input'
type='text'
ref={(input) => {this.blockInput = input;}} />
this.blockInput.value = '';
このように仮想DOMまたは本物を変更しますか?どのように正しい?Reactで入力を消去する正しい方法はありますか?
<input
id='block-input'
type='text'
ref={(input) => {this.blockInput = input;}} />
this.blockInput.value = '';
このように仮想DOMまたは本物を変更しますか?どのように正しい?Reactで入力を消去する正しい方法はありますか?
あなたのやっていることはお勧めできません。
制御された入力を行うとよいでしょう。それを実現するには、する必要があります。
は
入力の値の入力の変更を処理するためのハンドラ関数を状態を提供します。したがって、入力が変更されるたびに、状態が更新されます。例えば
:ここ
App.js
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
name: ''
}
}
handleChange = event => {
this.setState({
name: event.target.value
});
}
resetInput =() => {
this.setState({ name: '' });
}
render() {
const { name } = this.state;
return (
<div>
<input type="text" value={name} onChange={this.handleChange} />
<p>Hello, {name}</p>
<button onClick={this.resetInput}>Reset</button>
</div>
);
}
}
いくつかの回答では、このためにref構造を使用しています。 [ex](https://stackoverflow.com/questions/38731271/clear-an-input-field-with-reactjs)なぜこれを使う人がいますか? –
@AleksandrMaybach [The docs](https://reactjs.org/docs/glossary.html#refs)は、私ができるよりも優れていると言います。基礎となるDOM要素またはクラスインスタンスにアクセスするときはいつでもrefを使用します(要素のタイプ)。入力要素をプログラム的に集中させることは、refをどのように使用できるかの一例です。 – chipit24
@ chipit24:はい、わかります。この場合、refは実DOMまたは仮想DOMで動作しますか? –