У меня имеется вот такой вот компонент
import {
GetServerSidePropsContext,
GetServerSidePropsResult,
NextPage,
} from "next";
import axios, { AxiosResponse } from "axios";
interface Geo {
lat: string;
lng: string;
}
interface Address {
street: string;
suite: string;
city: string;
zipcode: string;
geo: Geo;
}
interface Company {
name: string;
catchPhrase: string;
bs: string;
}
interface IUser {
id: number;
name: string;
username: string;
email: string;
address: Address;
phone: string;
website: string;
company: Company;
}
interface IProps {
user?: IUser;
error?: string;
}
const UserDetailPage: NextPage<IProps> = ({ user, error }) => {
if (error)
return <div>Произошла ошибка при получении пользователя: {error}</div>;
if (!user) return <div>Загрузка...</div>;
return (
<div>
<div>Имя: {user.name}</div>
<div>Город: {user.address.city}</div>
</div>
);
};
export default UserDetailPage;
export const getServerSideProps = async (
context: GetServerSidePropsContext,
): Promise<GetServerSidePropsResult<IProps>> => {
try {
const id = context.query.id;
const response: AxiosResponse<IUser> = await axios.get(
`https://jsonplaceholder.typicode.com/users/${id}`,
);
await new Promise((response) => setTimeout(response, 3000));
const user = response.data;
return {
props: {
user: user,
},
};
} catch (error) {
if (axios.isAxiosError(error)) {
if (error.response?.status === 404) {
return {
props: {
error: "Пользователь не найден",
},
};
}
}
return {
props: {
error: "Неизвестная ошибка",
},
};
}
};
Но проблема в том, что при загрузке страницы, она очень долго грузится и провисает, а я бы хотел отобразить какой нибдуь лоадер перед ее загрузкой. Пробовал создать в users/loader.tsx , но он все равно не отображается. Как можно это реализовать?