Как отобразить preloader при загрузки страницы NextJS?

У меня имеется вот такой вот компонент
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 , но он все равно не отображается. Как можно это реализовать?
64f192996db72514954242.png
  • Вопрос задан
  • 844 просмотра
Пригласить эксперта
Ответы на вопрос 1
Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting
https://stackoverflow.com/questions/68118383/next-... ?
Для динамических маршрутов можно использовать fallback https://nextjs.org/docs/pages/building-your-applic...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
28 нояб. 2024, в 10:57
50000 руб./за проект
28 нояб. 2024, в 10:52
10000 руб./за проект