У меня есть следующий сценарий, где мне нужно запустить некоторый «код» при первом входе в страницу или , возвращаясь к нему с другой страницы.прослушиватель событий в приложении showhow на компоненте React не работает должным образом
Функция кеширования Safari (https://webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/) вызывает это, поскольку это кеширование моей страницы и ничего не выполняющее.
Я последовал их рекомендации по добавлению прослушивателя событий к событию «pageshow», таким образом, я могу проверить, сохраняется ли это событие, а затем запустить то, что мне нужно.
Это example в основном то, что я хотел бы иметь:
- первый доступ к странице ... прикрепить слушателя = Круто, у меня есть что.
- если я выйду из страницы и вернусь (используя Safari), он запустит моего слушателя на страницахhowhow = Cool, у меня это ... почти.
- слушатель должен быть запущен каждый раз, когда я возвращаюсь на эту страницу = Не круто, мой слушатель один раз срабатывает.
Я использую среагировать и componentDidMount() где я готовлюсь все:
Он работает в первый раз .. Я могу перемещаться из мою страницу и вернуться к ней + выполнение того, что мне нужно.
Проблема заключается в следующем: повторение «перехода от моей страницы и возврата» во второй раз ничего не сделает .. похоже, что слушатель удаляется или что-то в этом роде.
Спасибо за внимание.
Разве hte componentDidMount уже делает это для вас? Если бы это был я, я бы забыл о eventListener и просто обработать компонент реакции в своем компонентеDidMount. Это будет работать, если компонент монтируется каждый раз, когда вы перемещаетесь и возвращаетесь. Отображается ли компонент componentDidMount console.log каждый раз, когда вы уходите и возвращаетесь? – finalfreq
из-за кеширования Safari, любой код внутри событий жизненного цикла моего компонента (например, componentDidMount и т. Д.) Не будет выполняться. Вот почему мне пришлось прикрепить слушателя событий. –
В настоящее время я заставляю перезагружать страницу, если event.persisted - это правда .. что все выполняется (как и все другие браузеры). Но я бы хотел, чтобы поведение Safari не перегружало всю страницу, поэтому я добавил слушателя событий. –