【问题标题】:React Native: How to add two Actions to a button ?React Native:如何向按钮添加两个操作?
【发布时间】:2017-03-20 20:17:49
【问题描述】:

我有一个小问题。我想将两个动作传递给一个按钮,但我似乎无法弄清楚。我正在使用 react-native-router-flux 库。我尝试了类似的方法,但它并没有真正起作用。

如果有人可以提供帮助,那就太好了。谢谢!

<Button 
  onPress={Actions.Main1 && Actions.Tab2} 
  style={{ width: 90, height: 90 }} >
      <Text>Show</Text>
</Button>

【问题讨论】:

    标签: react-native reactive-programming react-native-ios react-native-router-flux react-android


    【解决方案1】:

    onPress 属性接受一个函数,而且只有一个函数。 Javascript 中没有自动组合两个函数的语法。您需要创建一个执行这两个操作的新函数。

    <Button 
      onPress={(e) => {
          Actions.Main1(e);
          Actions.Tab2(e);
      }} 
      style={{ width: 90, height: 90 }} >
          <Text>Show</Text>
    </Button>
    

    一些注意事项:

    1. 我将事件参数传递给了两个动作,因为只传递其中一个函数(即onPress={Actions.Main1})本身也会传递这个参数。在您的情况下,这可能不是必需的。
    2. 此代码的小问题是每次调用此组件的render 函数时都会创建一个新函数。这并不可怕,但也不理想。将来考虑一下。我在这篇文章中包含了该优化,因为 a)我们看不到组件的其余实现,b)我认为这个问题很初级,我们只需要担心主要概念。

    【讨论】:

    • 非常感谢您的回答。我试过了,但由于某种原因,每次按下按钮时,我都会收到错误:react-native-router-flux 错过了 key=Main1 的路由数据。如果我用一个动作做到这一点,它就可以正常工作。我目前正在研究它,也许它是愚蠢的。我一周前开始使用 React,所以它可能会有点不知所措..
    • 我明白了。很可能我们需要更多关于你的班级的信息。调用它的组件是 ES6 类,还是使用 React.createClass?此外,Actions 函数在哪里/如何声明?
    猜你喜欢
    • 1970-01-01
    • 2015-07-04
    • 2018-02-18
    • 2012-09-23
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 2015-01-30
    相关资源
    最近更新 更多