【发布时间】:2019-10-09 01:17:29
【问题描述】:
我有一个用 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>
当它失败时我没有收到任何错误,它只是不会触发回调。我知道我可以只使用工作示例,但我想知道为什么第一个示例不起作用。
编辑:一些附加信息
【问题讨论】:
-
you
saveApplicationFunction将回调函数作为第二个参数。您只需要传递函数名称。您正在做的是在第二个参数中调用该函数。这只是将函数的返回值设置为回调。 -
saveApplicationFunction() 的代码在哪里?在您的第一个示例中,您传递了对恰好调用函数的函数的引用。在您的第二个示例中,您正在传递一个立即被调用的函数
标签: javascript ios reactjs safari