我正在将 React 转移到 React Native。
但是我坚持使用e.target.value的问题。
这是 React 的代码,运行良好。
_searchContact = (e) => { this.state.keyword
this.setState({
keyword : e.target.value
});
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
<input
name="keyword"
placeholder="Search"
value={this.state.keyword}
onChange={this._searchContact}
/>
我试图用反应原生
的方式再次写作但它不起作用。
_searchContact = (e) => {
this.setState({
keyword : e.nativeTarget.value
});
}
<TextInput
style={{height: 40, borderColor: 'gray', borderWidth: 1}}
name="keyword"
placeholder="Search"
onChangeText={this._searchContact}
value={this.state.keyword}
/>
正在使用onChangeText
你必须使用一个匿名函数并像这样传入"text"
(text) => this._searchContact(text)
而不是将 e 传递到您的方法中,将测试作为参数传入并将关键字设置为等于文本。
_searchContact = (text) => {
this.setState({
keyword : text
});
}
只需使用 e
作为值并将其设置为 setState 中的keyword
。
您的代码应仅适用于以下代码:
_searchContact = (e) => {
this.setState({
keyword : e
});
}
实际上,当文本输入的文本更改时,onChange
和onChangeText
都会触发,但onChange
不提供更改的文本,它只是一个暗示回调,因此为了提取当前正在键入的文本的值,onChangeText
给出一个回调,将更改的文本作为回调的参数。
有关参考,请阅读此内容。