Это простой вопрос, на который почти наверняка есть ответ в документации JS где-то, но после поиска (а также поиска в Google какой-нибудь рецензии) я не могу его найти.
Как Я понимаю, что Next JS работает следующим образом:
Если вы приходите в свое приложение с «внешнего» URL-адреса, то есть не через Link
, то страница SSR'd, и Next JS отправляет в браузер комбо HTML с JS (Next JS framework, React, et c). Это HTML создается через React на сервере.
Во время SSR getInitialProps
вызывается на сервере и (я предполагаю) передает начальные данные вплоть до процесса SSR через props
Затем вызываются методы жизненного цикла React (componentDidMount
/ useEffect
). Приложение по-прежнему имеет доступ к исходным данным через props
. Насколько я понимаю, эти методы жизненного цикла вызываются на клиенте - это то, что говорит мне console.log
- и, таким образом, вам может быть гарантирован доступ к таким вещам, как localStorage
.
Но подразумевает ли это, что на стороне клиента второй рендер после исходного SSR, то есть исходный HTML доставленный заменен на спа?
Или исходное содержимое SSR остается, но Next JS каким-то образом вызывает методы жизненного цикла React "напрямую"?
Отчасти проблема в том, что я не знаю, как работает React внутри - как связаны рисование экрана и методы жизненного цикла между собой.
Я пытаюсь понять, как работает Next JS - что именно представляет собой поток, и как Next JS 'SSR и React работают вместе, и что происходит, когда и где.
Любая помощь высоко ценится!