У меня есть приложение, написанное на JavaScript с React. При нажатии кнопки в Safari на iOS onClick выполняет функцию, указанную в его теле, но эта функция принимает другую функцию в качестве обратного вызова, и эта функция обратного вызова не срабатывает.
Если я просто отправляю обратный вызов без анонимной функции, это работает. Но если я использую анонимную функцию для вызова обратного вызова, это не сработает.
Приведенный ниже код является выдержкой из метода render () класса React.
Это не работает в Safari на iOS (но прекрасно работает в Chrome на iOS):
<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>
Это работает в Safari на iOS и Chrome на iOS:
<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>
Я не получаю никаких ошибок, когда происходит сбой, просто не запускается обратный вызов. Я понимаю, что могу просто использовать рабочий пример, но я хотел бы знать, ПОЧЕМУ первый пример не работает.
Редактировать: некоторая дополнительная информация