Я использую apollo с next, и недавно я заметил, что пользовательские маршруты нарушают SSR. Обычно, если вы перемещаетесь по страницам, Apollo кеширует запрос, а когда вы в следующий раз находитесь на странице, он обслуживает все из кэша. Однако при использовании пользовательских маршрутов кеш никогда не используется.
Я также заметил, что при нажатии на эти страницы в консоли мигает ошибка. Но это уходит очень быстро, и я не смог скопировать это здесь.
Server.js
//
server.get('/about-us', (req, res) => app.render(req, res, '/about'));
server.get('/about', (req, res) => res.redirect(301, '/about-us'));
Обработчик щелчков меню
const navigate = link => () => {
Router.push(link);
};
Пункты меню
export const menu = [
{
name: 'Home',
url: '/',
},
{
name: 'Catalogs',
url: '/catalogs',
},
{
name: 'Shop',
url: '/shop',
},
{
name: 'Wholesale',
url: '/wholesale',
},
{
name: 'About Us',
url: '/about-us',
prefetch: true,
},
{
name: 'Contact Us',
url: '/contact-us',
prefetch: true,
},
];
Основываясь на предложении из спектра nextjs, я попытался предварительно выбрать пользовательские страницы в компоненте TopNav, но это не сработало.
const prefetch = url => {
if (process.browser) {
console.log('prefetching these urls', url);
Router.prefetch(url);
}
};
useEffect(() => {
menu.forEach(menuItem => {
if (menuItem.prefetch) {
prefetch(menuItem.url);
}
});
}, []);