реакции-маршрутизатор v3: как перезагрузить страницу при входе и выходе из указанного c маршрута - PullRequest
0 голосов
/ 22 января 2020

У меня есть определенный c маршрут для одностраничного приложения, который я хочу, чтобы страница полностью перезагружалась всякий раз, когда пользователь входит или покидает этот маршрут.

    <Route
      key={routeKeyGen()}
      path="/example"
      component={Example}
      onEnter={onExampleRoute}
    />

Я попытался сделать это, настроив onEnter для обновления sh страницы браузера:


const onExampleRoute = () => window.location.reload();

Я быстро понял, что это было нелепо, когда страница продолжала перезагружаться и снова. Я не думаю, что это обрабатывает и при выходе из маршрута.

Редактировать Вот API React Router v3 для Route: https://github.com/ReactTraining/react-router/blob/v3/docs/API.md#route

Редактировать 2 : в React Router v3 API есть onLeave для Route: https://github.com/ReactTraining/react-router/blob/v3/docs/API.md#onleaveprevstate

1 Ответ

1 голос
/ 22 января 2020

Самое простое решение с чистым React может быть:

Загрузить скрипт программно, в компоненте маршрута

Если это ваш route.js файл

<Route path="/path/you/want/to/load/js" component={Page.js} />

В компоненте Page.js:

class Page extends Component {

   ...

   componentDidMount () {
      const script = document.createElement("script");

      script.src = "https://path/to/your/file.js";
      script.async = true;
      script.onload = this.handleScriptLoad;

      document.body.appendChild(script);
   }

   handleScriptLoad = () => {
      // the script loaded!!!
   }

   ...
}

Подробнее см. Здесь: Добавление тега сценария в React / JSX

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...