首页 > 解决方案 > onClick 中的嵌套函数调用未触发

问题描述

我有一个用 javascript 和 React 编写的应用程序。在 iOS 上单击 Safari 中的按钮时,onClick 会执行在其主体中指定的函数,但该函数将另一个函数作为回调,并且该回调函数不会被触发。

如果我只发送没有匿名函数的回调,它就可以工作。但是如果我使用匿名函数来调用回调,它就不起作用。

下面的代码摘自 React 类的 render() 方法。

这在 iOS 上的 Safari 中不起作用(但在 iOS 上的 Chrome 中工作得很好):

<button className="button-top-level" data-selenium-id="preview"
          onClick={() => {
            this.props.saveApplicationFunction(null, () => this.refs.downloadButton.click(););
          }} type="button"><i className="material-icons">picture_as_pdf</i>Download a <span className="mobile-hide">copy of your </span>application</button>

这适用于 iOS 上的 Safari 和 iOS 上的 Chrome:

<button className="button-top-level" data-selenium-id="preview"
          onClick={() => {
            this.props.saveApplicationFunction(null, this.refs.downloadButton.click());
          }} type="button"><i className="material-icons">picture_as_pdf</i>Download a <span className="mobile-hide">copy of your </span>application</button>

当它失败时我没有收到任何错误,它只是不会触发回调。我知道我可以只使用工作示例,但我想知道为什么第一个示例不起作用。

编辑:一些附加信息

标签: javascriptiosreactjssafari

解决方案


您传递的第一个示例必须在您的函数上调saveApplicationFunction用以获取该click函数,第二个示例传递给您在此范围内调用saveApplicationFunction的函数的返回值。click


推荐阅读