Связывание страниц
Часть раздела Основы Next.js путешествия по React на Coddy — урок 7 из 47.
Две страницы, на которые никто не может перейти, — это ещё не сайт. Вам нужны ссылки, и в Next.js есть свой собственный компонент для них:
import Link from 'next/link';
export default function Home() {
return (
<nav>
<Link href="/about">About</Link>
</nav>
);
}Это выглядит как <a>, и в готовом HTML этим и является: тот же href, поддерживается клик правой кнопкой мыши, считывается скринридерами и поисковыми системами. Так почему бы просто не написать <a href="/about">?
Всё дело в том, как браузер обрабатывает обычный link: он выгружает текущую страницу и загружает абсолютно новую. Каждый скрипт скачивается заново, React перезапускается с нуля, и всё из памяти исчезает: открытое меню, наполовину заполненная форма, товары в корзине.
Link перехватывает клик и заменяет только ту часть экрана, которая на самом деле отличается. Приложение никогда не перезапускается, поэтому состояние сохраняется, а новая страница появляется мгновенно.
<a href>: полная перезагрузка, приложение перезапускается, состояние теряется<Link href>: тот же URL, тот же<a>в HTML, без перезагрузки
Правило простое: внутри вашего приложения всегда используйте Link. Оставьте обычный <a> для ссылок, ведущих за пределы вашего сайта.
Задание
ЛегкоДве страницы существуют, но между ними нет возможности переходить. Свяжите их с помощью Link.
- В обоих файлах импортируйте
Linkизnext/link. - В
app/page.jsxдобавьте ссылку на/aboutсid="to-about". - В
app/about/page.jsxдобавьте ссылку обратно на/сid="to-home".
Текст ссылки остаётся на ваше усмотрение. Тесты нажмут на каждую ссылку и проверят, что вы попали на нужную страницу.
Попробуйте сами
import './globals.css';
export const metadata = {
title: 'My App',
};
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
{children}
</body>
</html>
);
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы Next.js
2Маршрутизация и ссылки
Папки как маршрутыВложенные маршрутыСвязывание страницДинамические маршрутыСтраницы 404 (Not Found)Итоги: Маршрутизация