Size: a a a

Next.js — русскоговорящее сообщество

2019 May 27

KD

Kevin Detry in Next.js — русскоговорящее сообщество
но запросы-то для инициализации стора я делаю на сервере
источник

KD

Kevin Detry in Next.js — русскоговорящее сообщество
сервере, который рендерит страницу
источник

НК

Никита Кадиров in Next.js — русскоговорящее сообщество
как клиент получает токен?
источник

НК

Никита Кадиров in Next.js — русскоговорящее сообщество
при авторизации?
источник

KD

Kevin Detry in Next.js — русскоговорящее сообщество
схема: Client - Next - API
Client запрашивает страницу / с квери-параметрами { database: код_базы }
Next запрашивает с API токен по коду базы
Next создает стор с токеном, запускает экшен init (который внутри вызывает несколько функций, обращающихся к API по полученному токену), дожидается его выполнения
Next отправляет Client'у отрендеренную страницу и снапшот стора
Client восстанавливает стор по полученному снапшоту и теперь может слать свои запросы
источник

НК

Никита Кадиров in Next.js — русскоговорящее сообщество
как клиент получает код базы?
источник

KD

Kevin Detry in Next.js — русскоговорящее сообщество
есть скрипт инициализации онйлайн-модуля
ты ему в параметрах передаешь код базы, он тебе на страницу добавляет iframe с онлайн-модулем
у iframe'а src, соответственно, ссылка_на_next_сервер/?database=код_базы
источник

НК

Никита Кадиров in Next.js — русскоговорящее сообщество
т.е. клиент знает код базы заранее?
источник

KD

Kevin Detry in Next.js — русскоговорящее сообщество
да
источник

KD

Kevin Detry in Next.js — русскоговорящее сообщество
но ни в куки, ни в какое-то клиентское хранилище положить, боюсь, не выйдет, т.к. iframe изолированный
источник

KD

Kevin Detry in Next.js — русскоговорящее сообщество
если я правильно понимаю суть айфреймов, по крайней мере
источник

НК

Никита Кадиров in Next.js — русскоговорящее сообщество
на клиенте, т.е. в айфрейме у твоего приложения есть стор. почему в него ты не можешь положить токен?
источник

KD

Kevin Detry in Next.js — русскоговорящее сообщество
а как оно поможет?
мне надо, чтобы сервер next'а инициализировал стор для меня
насколько я помню, единственный способ заставить браузер отправить данные серверу при переходе по ссылке — это сама ссылка и куки
источник

НК

Никита Кадиров in Next.js — русскоговорящее сообщество
Kevin Detry
а как оно поможет?
мне надо, чтобы сервер next'а инициализировал стор для меня
насколько я помню, единственный способ заставить браузер отправить данные серверу при переходе по ссылке — это сама ссылка и куки
ты же уже передаешь код_базы в url для инициализации стора на сервере
источник

НК

Никита Кадиров in Next.js — русскоговорящее сообщество
при инициализации положи токен полученный для кода_базы в стор, который отдается клиенту
источник

НК

Никита Кадиров in Next.js — русскоговорящее сообщество
на клиенте используй этот токен из стора для запросов к api
источник

KD

Kevin Detry in Next.js — русскоговорящее сообщество
возвращаемся к изначальному вопросу: как мне на *сервере* прокинуть функциям-запросам токен, не прибегая к глобальной переменной
на клиенте пофиг, я просто из стора достану и норм мне, на клиенте стор-то точно тот
а на сервере глобальный инстанс стора юзать нельзя

ладно, наверное, надо просто функции-запросы тоже инициализировать, сразу после получения токена
а не так, чтобы они сами токен брали
источник

НК

Никита Кадиров in Next.js — русскоговорящее сообщество
Kevin Detry
возвращаемся к изначальному вопросу: как мне на *сервере* прокинуть функциям-запросам токен, не прибегая к глобальной переменной
на клиенте пофиг, я просто из стора достану и норм мне, на клиенте стор-то точно тот
а на сервере глобальный инстанс стора юзать нельзя

ладно, наверное, надо просто функции-запросы тоже инициализировать, сразу после получения токена
а не так, чтобы они сами токен брали
ты уверен, что инстанс стора глобальный?
источник

НК

Никита Кадиров in Next.js — русскоговорящее сообщество
это такая фича mobx
источник

KD

Kevin Detry in Next.js — русскоговорящее сообщество
Никита Кадиров
ты уверен, что инстанс стора глобальный?
да, я же его сам таким и сделал, по примеру with-mobx-state-tree
источник