可触摸的不透明度标头React Native

时间:2018-12-21 22:04:31

标签: reactjs react-native react-redux react-navigation touchableopacity

我希望我的反应导航栏中的标题可单击,并在单击时弹出一个菜单,我试图首先只是弹出日志或警报,但是它在屏幕呈现时不打开我点击它

这里是一个链接,其中我使用onPress将自定义组件添加到标题中,但仅触发onRender

https://snack.expo.io/r10TGyieE

我在做什么错了?

4 个答案:

答案 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方法调用函数,因此您可以直接编写函数名称。

相关问题