可触摸的不透明标题 React Native

Posted

技术标签:

【中文标题】可触摸的不透明标题 React Native【英文标题】:Touchable Opacity Header React Native 【发布时间】:2019-05-22 07:23:33 【问题描述】:

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

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

https://snack.expo.io/r10TGyieE

我做错了什么?

【问题讨论】:

请尝试该代码,如果正确则标记为已解决。 【参考方案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>
    );
  

【讨论】:

【参考方案2】:

正如 Tarreq 所说,您可以使用它

否则

onPress=this.someAction

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

【讨论】:

【参考方案3】:

就像爸爸说的,

这个:

onPress=this.someAction()

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

但是当你使用时:

onPress=() => this.someAction()

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

【讨论】:

【参考方案4】:

https://snack.expo.io/HJvXPJix4

你需要让它调用onPress=() =&gt; this.someAction()而不是onPress=this.someAction()

【讨论】:

以上是关于可触摸的不透明标题 React Native的主要内容,如果未能解决你的问题,请参考以下文章

当按下另一个可触摸的不透明度时,一个可触摸的不透明度不会按下

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

React Native FlatList 可触摸不透明度

使用TouchableOpacity onpress的图像不能反应原生

React Native:如何在 ScrollView/ListView 子项进入/离开视口时为其设置不透明度动画?

可触摸不透明度在本机反应中无法正常工作? v0.66.1