Гэтсби Как мне сбросить приложение при перезагрузке сайта - PullRequest
1 голос
/ 13 октября 2019

Я создаю веб-сайт реагирования / Гэтсби и пытаюсь заставить работать навигацию, требуются некоторые рекомендации

Так что в основном у меня есть сайт в домене, такой как: https // mysite.com

При навигации по сайту мой маршрут добавляется в домен, например: https // mysite.com / page1, https // mysite.com / page2 и т. Д.

Когда я обновляю браузер, я хочусайт для перезагрузки сайта в исходное состояние, то есть https // mysite.com.

Например, когда я перезагружаюсь с / page2, сайт, похоже, запоминает последнюю позицию. Так что при перезагрузке у меня все еще есть https // mysite.com / page2 в адресной строке, тогда как я хочу, чтобы сайт перешел на домашнюю страницу.

Возможно ли это?

Спасибо

1 Ответ

0 голосов
/ 14 октября 2019

См. Этот вопрос о том, как обнаружить перезагрузку страницы (например, нажав F5). Второй ответ с наибольшим количеством голосов рекомендует этот код для обнаружения обновления и запуска другой функции:

componentDidMount() {
    window.onbeforeunload = function() {
        this.onUnload();
        return "";
    }.bind(this);
}

Гэтсби использует @reach/router под колпаком. Поэтому используйте Gatsby Link , чтобы перенаправить на корневую страницу:

import { navigate } from "gatsby"

componentDidMount() {
    window.onbeforeunload = function() {
        this.onUnload();
        return "";
    }.bind(this);
    navigate("/"); // redirect to your root page here
}

Пользователь сможет вернуться на предыдущую страницу. Если вы не хотите этого, вы замените историю следующим образом:

navigate("/", { replace: true });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...