可触摸的不透明标题反应原生

问题描述 投票:0回答:4

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

这是一个链接,我在其中使用onPress向标题添加了一个自定义组件,但它只触发onRender

https://snack.expo.io/r10TGyieE

我究竟做错了什么?

reactjs react-native react-redux react-navigation touchableopacity
4个回答
1
投票

https://snack.expo.io/HJvXPJix4

你需要让它调用onPress={() => this.someAction()}而不是onPress={this.someAction()}


1
投票

就像Dadsquatch说的那样,

这个:

onPress={this.someAction()}

被认为是直接代码,一旦应用程序到达它所在的行,就会执行它(这就是为什么它在启动时执行,尽管你在启动时没有提到它)

但是当你使用时:

onPress={() => this.someAction()}

你告诉编译器,这是onPress发生时要执行的函数。你可以看到它是一个箭头函数格式。


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>
    );
  }
}

0
投票

正如塔雷克所说,你可以使用它

要不然

onPress={this.someAction}

作为onPress方法调用一个函数,所以你可以直接写函数名。

© www.soinside.com 2019 - 2024. All rights reserved.