Size: a a a

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

2020 March 18

PG

Pasha G in Next.js — русскоговорящее сообщество
Привет, погружаюсь в next и вот не пойму, есть вообще какая-то возможность получить куку в redux-thunk? И вообще есть нормальный стандарт как из редакса слать запросы с сервера в которых нужно токен из куки для авторизации проставлять?
источник

in Next.js — русскоговорящее сообщество
Pasha G
Привет, погружаюсь в next и вот не пойму, есть вообще какая-то возможность получить куку в redux-thunk? И вообще есть нормальный стандарт как из редакса слать запросы с сервера в которых нужно токен из куки для авторизации проставлять?
источник

in Next.js — русскоговорящее сообщество
Можно сделать синглтон с кукой и забирать ее уже на этапе запроса, минуя редакс, но @Devision по моему объяснял тут почему это не лучшее решение
источник

ВЛ

Владимир Линкевич in Next.js — русскоговорящее сообщество
ага, синглтон юзать нельзя) иначе будешь шарить в аси нхронщине данные одного юзера на дргуих из за того что интснас на стороне сервера один
источник

PG

Pasha G in Next.js — русскоговорящее сообщество
Пример на то и пример, что там всё слишком упрощено)
Мне похоже нужно что-то типо этого:
https://spectrum.chat/next-js/general/passing-token-through-request-headers-on-every-axios-req-client-vs-server-side~300679f3-8c01-4b6d-93ef-43e6d2015110
источник

in Next.js — русскоговорящее сообщество
Владимир Линкевич
ага, синглтон юзать нельзя) иначе будешь шарить в аси нхронщине данные одного юзера на дргуих из за того что интснас на стороне сервера один
Ты кстати подходил «к снаряду» повторно? или оставил очередь ака костыль?
источник

ВЛ

Владимир Линкевич in Next.js — русскоговорящее сообщество
Ты кстати подходил «к снаряду» повторно? или оставил очередь ака костыль?
ну так как у меня цель была поддержка синглтонов из за прееноса проекта. идей мы больше не сыскали) так что у нас очередь на стороне некста всё ещё есть и думали в плохом случае кластер поднять) а так - можно юзать 2 разных инстанса - один для клиента который работает с  клиентскими данными, а второй серверный который требует "req"
источник

in Next.js — русскоговорящее сообщество
Владимир Линкевич
ну так как у меня цель была поддержка синглтонов из за прееноса проекта. идей мы больше не сыскали) так что у нас очередь на стороне некста всё ещё есть и думали в плохом случае кластер поднять) а так - можно юзать 2 разных инстанса - один для клиента который работает с  клиентскими данными, а второй серверный который требует "req"
А как очередь реализовал?
источник

ВЛ

Владимир Линкевич in Next.js — русскоговорящее сообщество
ну то есть типо инстанс по сути не создавать который хранит данные на стороне сервера. а типо каждый раз кидать req из которого берутся все параметры
источник

ВЛ

Владимир Линкевич in Next.js — русскоговорящее сообщество
class Queue {
 constructor({ timeoutMs = 30000 }) {
   // начнём с того что промис уже зарезолвлен
   this.promise = Promise.resolve();
   this.options = {
     timeoutMs
   };
 }

 /**
  * При каждом запросе мы кладём промис в очередь и возвращаем очередь без своего промиса но со своим резолвером
  * */
 next() {
   // создаём новый промис который будем класть в очередь
   const ejectedPromise = createEjectedPromise();
   const { resolve, reject, promise } = this.options.timeoutMs
     ? withTimeout(ejectedPromise, this.options.timeoutMs)
     : ejectedPromise;

   // сохраняем ссылку на старый промис
   const prevPromise = this.promise;

   // запихиваем в очередь новый промис
   this.promise = this.promise.catch(() => void 0).then(() => promise);

   // возвращаем последний резолвер, и список промисов кроме моего
   return {
     reject,
     resolve,
     promise: prevPromise
   };
 }
}

ну и в мидл варе

// если это запрос то встаём в очередь
     const { promise, resolve } = queue.next();

     // прокинем в следующий реквест механизм окончания реквеста
     req.locals = {
       resolveNextQueue: resolve
     };
источник

ВЛ

Владимир Линкевич in Next.js — русскоговорящее сообщество
просто инстанс очереди который кладёт запрос в очередь и дожидается
источник

ВЛ

Владимир Линкевич in Next.js — русскоговорящее сообщество
работает только с Page
источник

ВЛ

Владимир Линкевич in Next.js — русскоговорящее сообщество
то есть мы заюзали методы некста который определяет это запрос на страницу или что то другое. и на странице делаем очередь уже и прочее)
источник

ВЛ

Владимир Линкевич in Next.js — русскоговорящее сообщество
немного коряво написано но у нас были СЛИШКОМ ужатые сроки отсюда и спешка и такая реализация)
источник

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

KS

Konstantin Surkin in Next.js — русскоговорящее сообщество
Всем привет. Помогите, пожалуйста. У меня есть главная страница сайта, контент должен приходить с сервера. Я использую getInitialProps, в котором шлю запросы на сервак. Вопрос - я из getInitialProps должен возвращать нужный контент, который пойдет как пропсы определенной странице или же я должен вызвать для каждого запроса dispatch к reduxstore в getInitialProps (доступ к reduxstore из getInitialProps настроен) и на главной странице использовать useSelector?
источник

V

VACincoming in Next.js — русскоговорящее сообщество
Ребят, у реакт роутера есть свойство history.action которое хранит текущий экшн(PUSH, REPLACE, or POP), как я могу найти это свойство в некст роутере?
источник

ВЛ

Владимир Линкевич in Next.js — русскоговорящее сообщество
VACincoming
Ребят, у реакт роутера есть свойство history.action которое хранит текущий экшн(PUSH, REPLACE, or POP), как я могу найти это свойство в некст роутере?
withRouter, useRoter вернёт router в котором есть эти методы
источник

V

VACincoming in Next.js — русскоговорящее сообщество
Владимир Линкевич
withRouter, useRoter вернёт router в котором есть эти методы
withRouter-ом я должен обернуть сам компонент, затем я смогу юзать свойство useRouter?
Ибо на данный момент я получаю такое
источник

ВЛ

Владимир Линкевич in Next.js — русскоговорящее сообщество
useRouter это хук)
источник