TL; DR: При переходе на страницы с response-router v4 , как сохранить текущий компонент, пока новый компонент не будет готов, то есть он сделал свои вызовы ajax и получил необходимые данные дляdisplay?
В настоящее время act-router v4 работает следующим образом:
- Пользователь нажимает ссылку
- Изменения маршрута
- Размонтироватьтекущий компонент и монтирование нового соответствующего компонента
- Ajax-вызовы для заполнения данных компонентов
Однако если мы подумаем о mobile-first подход , рабочий процесс должен быть:
- Пользователь нажимает ссылку
- соответствующий компонент монтируется, скрывается, инициализируется с помощью вызовов ajax в componentDidMount / updated
- инициализация выполнена, компонент и его данныеготов
- Изменить URL, размонтировать старый компонент и отобразить новый.
Изменение URL может быть после того, как пользователь щелкнет ссылку или после того, как новый компонент будет готов.
Используя redux мы можем достичь этого следующим образом:
- Сделать все компоненты состоящими, иметь действия componentXLoad () для каждого
- Вместо изменения маршрута запустите эти действия, а внутри действий изменитеurl после выборки данных компонента
Тем не менее, я считаю, что нам не нужно идти до конца и делать каждый компонент с состоянием и генерировать множество действий для каждого перехода страницы.
Идея у меня была:
- Пользователь нажимает ссылку
- Маршрут изменяется, новый компонент инициализируется
- Если рендеринг нового компонента ()Метод возвращает ноль, не размонтируйте текущий компонент
- Когда новый компонент будет готов, рендеринг не равен нулю, размонтируйте старый компонент и отобразите новый.
Я считаю, что этотеоретически возможно.
Уже есть библиотека, которая делает это?Или это что-то легко сделать с помощью API React Router v4?
Кроме того: Как это повлияет на SEO, есть ли у Google шанс скрыть наказание за сайт?
У меня естьнашел эту библиотеку https://github.com/faceyspacey/redux-first-router, кажется, что она может сделать это, сделав все с состоянием, но опять же для чего-то такого простого кажется излишним, чтобы переключиться на это.
Спасибо