根据Facebook的官方文件:
每次文本更改时, onChangeText
都会调用一个函数
和
onSubmitEditing
在提交文本时需要调用函数
我正在关注text input handling上的官方Facebook教程,代码:
export default class PizzaTranslator extends Component {
constructor(props) {
super(props);
this.state = {text: ''};
}
render() {
return (
<View style={{padding: 10}}>
<TextInput
style={{height: 40}}
placeholder="Type here to translate!"
onChangeText={(text) => this.setState({text})}
/>
<Text style={{padding: 10, fontSize: 42}}>
{this.state.text.split(' ').map((word) => word && '').join(' ')}
</Text>
</View>
);
}
}
取一个句子并将其所有单词更改为表情符号,但如果我将onChangeText
更改为onSubmitEditing
,则在提交文字时会收到错误this.state.text.split is not a function. (In 'this.state.text.split('')', 'this.state.text.split' is undefined)
。
答案 0 :(得分:2)
此时文档是正确的,onChangeText
和onSubmitEditing
都要执行回调函数。本质区别在于提供给回调函数的参数。 onChangeText
将新值作为字符串给出,onSubmitEditing
以对象作为第一个参数执行回调函数。您可以使用
<TextInput
onChangeText={(text) => {this.setState({text}); console.warn('text', text);}}
onSubmitEditing={(argument) => console.warn(Object.keys(argument))}
/>