javascript - onClick 中的嵌套函数调用未触发

标签 javascript ios reactjs safari

我有一个用 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>

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

编辑:一些附加信息

最佳答案

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

关于javascript - onClick 中的嵌套函数调用未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56258714/

相关文章:

javascript - 使用 lodash 从数组中过滤冗余对象

ios - 在 PromiseKit 上链接 promise

javascript - jQuery 不会在第一次点击时触发,但在第二次点击时触发

javascript - 在 Angular 中使用 Restangular 编辑模型会破坏 PUT,因为 Restangular 会附加模型 ID

javascript - jQuery - 随机选择总和

iOS 6 - 响应键盘完成按钮状态

ios - 如何正确将 .bundle 包含到 Unity3d 包中

Javascript API 语法帮助 - const { uport, MNID }

reactjs - render() 中的 React 函数

javascript - 如何使用lodash计算对象数组中的多个属性值?