我希望我的反应导航栏中的标题可单击,并在单击时弹出一个菜单,我试图首先只是弹出日志或警报,但是它在屏幕呈现时不打开我点击它
这里是一个链接,其中我使用onPress将自定义组件添加到标题中,但仅触发onRender
https://snack.expo.io/r10TGyieE
我在做什么错了?
答案 0 :(得分:1)
https://snack.expo.io/HJvXPJix4
您需要让它调用onPress={() => this.someAction()}
而不是onPress={this.someAction()}
答案 1 :(得分:1)
就像Dadsquatch所说的,
此:
onPress={this.someAction()}
被认为是直接代码,一旦应用程序到达其所在的行就被执行(这就是为什么它在启动时执行的原因,尽管您在启动时没有提到它)
但是当您使用时:
onPress={() => this.someAction()}
您告诉编译器,这是发生onPress时要执行的功能。 您会看到它是箭头功能格式。
答案 2 :(得分:1)
您的onPress事件没有绑定,因此它将在您运行应用程序时首先触发。
使用Es6箭头功能时,默认情况下绑定您的功能。onPress={()=>this.someFunction()}
否则,您需要手动绑定onPress={this.someFunction.bind(this)}
来调用函数。
class LogoTitle extends React.Component {
render() {
return (
<TouchableOpacity onPress={()=>alert('test')}>
<Text style={{ color: "white", fontWeight:'bold' }}> List Layout</Text>
</TouchableOpacity>
);
}
}
答案 3 :(得分:0)
正如塔雷克所说,您可以使用它
否则
onPress={this.someAction}
由于onPress方法调用函数,因此您可以直接编写函数名称。