Size: a a a

React: русскоязычное сообщество

2020 April 29

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Вообще, это обычно решается редуксом.
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Если у вас редукс, вы получаете первый рендер в точности на тех же данных, что и были у сервера.
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
В мобиксе и эффекторе, видимо, какие-то свои лайфхаки на эту тему есть.
источник

АН

Авроамэриканец Начрэ... in React: русскоязычное сообщество
Мой вопрос не о том что такое гидрирование, а о том, как передать данные.

Например я отдаю страницу пользователю. На сервере я обладаю всеми данными, вставляю их в компоненты, а потом отдаю и мне нужно что бы клиент просто использовал уже вставленные данные, вместо отправки запросов к API как будто клиент с другой страницы перешел на страницу пользователя. Ведь данные я ему уже предоставил. Положив в какой-нибудь условный объект SSR_Data
источник

АН

Авроамэриканец Начрэ... in React: русскоязычное сообщество
Юра Чеботаев
Вообще, это обычно решается редуксом.
Я тоже думаю о нём
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Я вас понял.
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Но если без библиотек, то это надо будет костылять.
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Например.
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Если у вас axios, то для него нужно сделать прокси, на сервере записывать все пары запрос-ответ, складывать в сериализуемый кэш, а на клиенте, аналогично, подставлять в клиентский кэш ответы из серверного кэша.
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Тогда будет без запросов.
источник

АН

Авроамэриканец Начрэ... in React: русскоязычное сообщество
Юра Чеботаев
Если у вас редукс, вы получаете первый рендер в точности на тех же данных, что и были у сервера.
Засовывать в скрипт тег декларацию записи данных в redux, а потом гидрировать и в компонентах описывать "сначала проверь, есть ли нужные данные в сторе редукса"?
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Не совсем.
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Сервер, понятно, куда-то должен писать данные. Я это делал в переменную глобальную, типа window.INITIAL_REDUX_STATE = {...}
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
А при инициализации стора, соответственно, вычитывается:

creatStore(reducer, window.INITIAL_REDUX_STATE).
источник

АН

Авроамэриканец Начрэ... in React: русскоязычное сообщество
Юра Чеботаев
Если у вас axios, то для него нужно сделать прокси, на сервере записывать все пары запрос-ответ, складывать в сериализуемый кэш, а на клиенте, аналогично, подставлять в клиентский кэш ответы из серверного кэша.
Мне не нужен кэш. Нужно только что бы первый рендер не выполнял дополнительных запросов. После загрузки страницы данные могут измениться. Я пытаюсь решить по сути 2 задачи:
- Снизить нагрузку на сервер
- Снизить потребление энергии на клиентах
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Да.
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
И тот вариант, который я описал это по-сути, кэш.
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Но это будет особый кэш, который будет инвалидироваться после первого запроса.
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
То есть, второй запрос пойдет мимо него.
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
То есть, вы будете писать как обычно, делать запросы, туда-сюда.
источник