react native的onpress问题
代码如下
export default class app extends Component {
state={
name:''
}
render(){
return(
<View>
<TextInput onChangeText={this.handle}></TextInput>
<TouchableOpacity
onPress={this.handleSubmit(this.state.name)}>
<Text>提交</Text>
</TouchableOpacity>
</View>
)
}
handle=(text)=>{
this.setState({name:text})
}
handleSubmit=(name)=>{
alert(name)
}
}
问题:这样写的话每次输入文本都会调用handleSubmit函数,这是为什么
<TouchableOpacity
onPress={()=>this.handleSubmit(this.state.name)}>
<Text>提交</Text>
</TouchableOpacity>
这样写可以不触发,但是。。。为什么??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
每次setState都会重新执行render函数,由于this.handleSubmit(this.state.name)是函数执行的形式,所以每次setState都会调用这个函数
onPress 要求是传入一个函数。
你上述这样写其实是将
handleSubmit
函数的执行后的返回值undefined
赋值给了 onPress。每次输入都会更改state,触发render,jsx语句重新解释编译运行,每次都会执行上述逻辑;
改成下面的写法就行了: