onPress 事件在反应原生上不起作用



它只显示警报消息Idk why。这就是代码。

处理注册的功能不起作用。我尝试过各种方法,但都解决不了。我是一名初级网络开发人员,无法解决这个问题。我应该用胡克,但我喜欢接力。

class Login extends Component {    
state = {email: "", password:"", userdata:{}}
handleSignUp(email,password) {

Alert.alert(  
'Alert Title',  
'My Alert Msg',  
[  
{  
text: 'Cancel',  
onPress: () => console.log('Cancel Pressed'),  
style: 'cancel',  
},  
{text: 'OK', onPress: () => console.log('OK Pressed')},  
]  
);  
}


<Button title="Ciao" onPressButton ={this.handleSignUp(this.state.email,this.state.password)} style={styles.button}></Button>
{/*<TouchableOpacity onPress ={this.handleSignUp(this.state.email,this.state.password)} style={styles.button} >
<Text  >Registrati</Text>
</TouchableOpacity>*/}
</View>
)
}
}

您从哪里获得Button组件?可以从react native导入的默认Button没有onPressButton属性。您应该尝试使用onPress

您需要将函数传递给onPress道具。

在你的例子中,你不传递函数,但它的返回值会导致你正在执行它。如果你不传递一个函数,onPress就没有什么可执行的,它实际上只不过是一个回调。

你应该写这样的东西:

onPressButton={() => this.handleSignUp(this.state.email,this.state.password)}

此外,由于避免直接在jsx中编写函数是一种很好的做法,因此您应该考虑如下重写函数:

handleSignUp() {
const {email, password} = this.state;

Alert.alert(  
'Alert Title',  
'My Alert Msg',  
[  
{  
text: 'Cancel',  
onPress: () => console.log('Cancel Pressed'),  
style: 'cancel',  
},  
{text: 'OK', onPress: () => console.log('OK Pressed')},  
]  
);
}

然后你可以简单地写:

onPressButton={this.handleSignUp}

相关内容

  • 没有找到相关文章

最新更新