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