Size: a a a

Nuxt.js | Vue SSR

2021 April 09

I

Ivan Sergeevich in Nuxt.js | Vue SSR
<client-only> , звучит печально
источник

АК

Аркадий Кожедуб... in Nuxt.js | Vue SSR
Рендер нужен и на стороне сервера. Видимо единственное решение поднимать этот функционал выше в компонент страницы, но это фигня конечно получается.
источник

I

Ivan Sergeevich in Nuxt.js | Vue SSR
А нельзя обойтись без v-if else?
источник

АК

Аркадий Кожедуб... in Nuxt.js | Vue SSR
Нельзя, ситуация такая: есть страница на которой есть кнопка с подтверждением почты пользователя, эта кнопка выводится только при условии, если пользователь ранее не подтверждал почту. Также кнопка открывает модальное окно с формой в которую можно ввести код, это модальное окно - дочерний компонент, именно в нем реализован запрос на отправку кода подтверждения почты. При успешном подтверждении почты в store записывается информация об этом и в родителе (на странице) должна пропасть кнопка.
источник

АК

Аркадий Кожедуб... in Nuxt.js | Vue SSR
Вся основная суть процесса отражается в моем примере по ссылке.

А именно, в дочернем компоненте меняется store, и родительский компонент не перерисовывется на стороне сервера. Как следствие не верно отрисованный шаблон и ошибка от самого vue что виртуальный ДОМ не совпадает.
источник

I

Ivan Sergeevich in Nuxt.js | Vue SSR
Имеет смысл инитить стор в другом месте, может в накстинит, и не рисовать компонент, который на сервере должен прибить сам себя?
источник

АК

Аркадий Кожедуб... in Nuxt.js | Vue SSR
он не прибивает сам себя, он мутирует данные внутри дочернего компонента и не перерисовывает родительский - который зависит от этих данных из store

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

RR

Revy Ross in Nuxt.js | Vue SSR
думаю где-то все же у тебя ошибка ) я у себя это победил, хот я в голове пока каша по поводу причины и механики как это работает
источник

RR

Revy Ross in Nuxt.js | Vue SSR
у меня проблема возникала с боковым меню, причем при клиентской навигации все ок, а вот при полной перезагрузке страницы сыпало ошибки гидратации. это натолкнуло на мысль о том, что каких-то данных на которые смотрят v-if-ы нет на момент рендеринга
источник

RR

Revy Ross in Nuxt.js | Vue SSR
примерно так и оказалось, хотя я все равно не понимаю каким боком это может влиять
источник

RR

Revy Ross in Nuxt.js | Vue SSR
ну как бы отрендерил с одним набором данных > отдал на клиента > данные изменились > перерендерил
источник

V

Vladislav in Nuxt.js | Vue SSR
Всем привет, была такая ошибка у кого-нибудь?
источник

АК

Аркадий Кожедуб... in Nuxt.js | Vue SSR
никакой ошибки, победить можно лишь поднятием кода записывающего данные в store на самый верх цепи компонентов
источник

АК

Аркадий Кожедуб... in Nuxt.js | Vue SSR
вот рабочий вариант моей проблемы, но тут пришлось вынести код из дочернего компонента в плагин, который выполняется на стороне сервера до каких либо отрисовок шаблона

https://codesandbox.io/s/sparkling-browser-do9mn?file=/pages/index.vue
источник

АК

Аркадий Кожедуб... in Nuxt.js | Vue SSR
а что у тебя в ~/api/index.js?
источник

V

Vladislav in Nuxt.js | Vue SSR
Импорты модулей есть и функционал связанный с ними. Если их закомментировать, то проект без проблем соберётся, но во время работы, если я их раскомментирую то все будет работать)
источник

V

Vladislav in Nuxt.js | Vue SSR
Но проект собрать заного не получается..
источник

АК

Аркадий Кожедуб... in Nuxt.js | Vue SSR
если можешь показать код или воспроизвести проблему в codesandbox, то будет проще понять в чём дело и как это решить
источник

RR

Revy Ross in Nuxt.js | Vue SSR
а автор вот этой статьи не здесь случайно?

https://habr.com/ru/post/501652/
источник

I

Ivan Sergeevich in Nuxt.js | Vue SSR
😂
источник