Интерфейсы загрузки и ошибок
Реализуйте состояния загрузки с помощью `loading.js` и корректно обрабатывайте ошибки с помощью границ `error.js` в приложении
«Интерфейсы загрузки и ошибок» — бесплатный урок Next.js 15 Fullstack (App Router + Server Actions) на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Next.js 15 Fullstack (App Router + Server Actions), и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Next.js 15 Fullstack (App Router + Server Actions) содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Why Loading States Matter
When your Next.js application fetches data, it can take some time. Without any visual feedback, users might think the app is frozen or broken.
- Improve User Experience: Keep users informed.
- Reduce Frustration: Prevent perceived slowness.
- Indicate Progress: Show that something is happening in the background.
Introducing `loading.js`
Next.js App Router provides a special file convention, loading.js, to automatically create a loading UI for a route segment.
When data is being fetched for a page.js or layout.js file, Next.js automatically displays the UI defined in its nearest loading.js sibling or ancestor.
Creating a Simple Loading UI
To create a loading UI, simply add a loading.js file inside a route segment folder. It should export a default React component.
This component will be rendered instantly when the segment is loading.
export default function Loading() {
return (
<div style={{ padding: '20px', textAlign: 'center' }}>
<h2>Loading...</h2>
<p>Please wait while we fetch the content.</p>
</div>
);
}How `loading.js` Works
Under the hood, loading.js works with React Suspense. Next.js wraps the corresponding page.js and its nested children in a Suspense Boundary.
When any data fetching inside that boundary is pending, the loading.js component is shown as a fallback.
Nested Loading States
You can have multiple loading.js files at different levels of your route. For example, a global loading UI and a more specific one for a sub-route.
Next.js will show the closest ancestor loading.js for the segment that is currently loading.
Handling Application Errors
Just like loading states, errors are a part of any application. Uncaught errors can crash your app, leading to a poor user experience.
Next.js App Router provides a way to gracefully handle errors and display a custom error UI using error.js.
Introducing `error.js`
The error.js file convention allows you to define an error UI that automatically wraps a route segment and its children in a React Error Boundary.
This boundary catches errors that occur during rendering, in event handlers, and in data fetching within its scope.
Creating a Basic Error UI
Similar to loading.js, create an error.js file in a route segment. It must be a React Client Component (use 'use client'; at the top).
It receives error (the error object) and a reset function as props.
'use client';
import { useEffect } from 'react';
export default function Error({ error, reset }) {
useEffect(() => {
// Log the error to an error reporting service
console.error(error);
}, [error]);
return (
<div style={{ padding: '20px', textAlign: 'center', color: 'red' }}>
<h2>Something went wrong!</h2>
<button
onClick={() => reset()} // Attempt to re-render the segment
style={{ marginTop: '10px', padding: '8px 15px' }}
>
Try again
</button>
</div>
);
}Error Recovery with `reset()`
The reset() function provided to your error.js component is crucial. When called, it attempts to re-render the entire segment that threw the error.
This allows users to try again without navigating away, potentially resolving transient issues.
Quick Check on UI Files
Which statement accurately describes the primary purpose of loading.js in Next.js App Router?
Recap: Loading & Error UI
In this lesson, you learned how to enhance your Next.js application's user experience by implementing visual feedback for loading and error states.
loading.js: Displays a temporary UI while data is being fetched, using React Suspense.error.js: Catches errors in a segment and displays a fallback UI, allowing users to attempt recovery with thereset()function.
These conventions help create more robust and user-friendly Next.js applications.
Часто задаваемые вопросы
Урок «Интерфейсы загрузки и ошибок» бесплатный?
Да — полный текст урока «Интерфейсы загрузки и ошибок» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Next.js 15 Fullstack (App Router + Server Actions), подпишись на CoddyKit PRO. Курс Next.js 15 Fullstack (App Router + Server Actions) содержит 4 уроков всего.
Чему я научусь в уроке «Интерфейсы загрузки и ошибок»?
Реализуйте состояния загрузки с помощью `loading.js` и корректно обрабатывайте ошибки с помощью границ `error.js` в приложении Ты практикуешь Next.js 15 Fullstack (App Router + Server Actions) с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Next.js 15 Fullstack (App Router + Server Actions)?
Предыдущий опыт не требуется. Next.js 15 Fullstack (App Router + Server Actions) на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Интерфейсы загрузки и ошибок»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Next.js 15 Fullstack (App Router + Server Actions)?
Да. Каждый урок Next.js 15 Fullstack (App Router + Server Actions) включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Макеты и компоненты страниц
- Динамические маршруты и параметры
- Интерфейсы загрузки и ошибок
- Группы маршрутов и вложенные макеты