我最近开始学习 react.js(喜欢它!)并遇到了一个处理输入值的有趣场景。
在 Egghead 教程中,他们让您使用如下方式更新输入ref
:
handleSubmit(){
var newNote = this.refs.note.value;
this.refs.note.value = '';
this.props.addNote(newNote);
}
<input type="text" ref="note" />
<button type="button" onClick={this.handleSubmit.bind(this)}>
Submit
</button>
后来,我在玩材质 ui库(也很棒),遇到了一个问题,我无法使用ref
. 在 Google 上一段时间后,我发现您可以使用 a state
,然后使用onChange
函数对其进行更新,如下所示:
handleNoteChange(e){
this.setState({newNote: e.target.value});
}
<TextField
type="text"
value={this.state.newNote}
onChange={this.handleNoteChange.bind(this)} />
似乎使用 aref
会更容易,但是,在我最近学习 react native 的时候,你所做的一切似乎都是第二种方式,使用onChange
函数和state
变量。
所以我的问题是,继续前进,使用其中一个会更好吗?也许有一些限制使得state
在本机上使用更好?