javascript - 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>
当它失败时我没有收到任何错误,它只是不会触发回调。我知道我可以只使用工作示例,但我想知道为什么第一个示例不起作用。
编辑:一些附加信息
解决方案
您传递的第一个示例必须在您的函数上调saveApplicationFunction
用以获取该click
函数,第二个示例传递给您在此范围内调用saveApplicationFunction
的函数的返回值。click
推荐阅读
- javascript - JS 新手,计数完成后试图阻止我的 div 计数
- ios - 新的 expo init 裸项目不为 iOS 构建
- javascript - 元素类型无效
- c# - Aws Lambda 工具包:无法加载文件或程序集'netstandard,版本 = 2.0.0.0 错误
- cypress - Cypress:想要部分模拟 XHR 响应
- javascript - 如何设置文件输入控件以使用 application/pdf 而不是 application/octet-stream 以角度保存上传的 pdf 文件到 firebase
- reactjs - react-redux 中的 dispatch 函数和 reducer 函数之后会发生什么?
- jquery - jquery设置属性错误,请帮助克服这个问题
- ruby-on-rails - 仅显示带有grape-swagger-rails 的特定swagger API 文档端点
- java - 遍历列表,如果对象字符串不在列表中,则返回 null