Мой проект NEXTJS загружает так много модулей, когда я нажимаю ссылку на страницу

У меня есть небольшой проект nextjs, но каждый раз, когда я запускаю его в первый раз, когда я нажимаю ссылку, перехожу на свою страницу, например: home/product/[slug], мне приходится ждать около 12 секунд, чтобы загрузить больше, чем компиляция 2000 модулей. . вот код, проверьте его, спасибо, что прочитали и помогли мне

// page.tsx (app)
'use client'
import SideBar from "@/components/SideBar/SideBar";
import Header from "@/components/Header/Header";

export default function RootLayout({
    children,
}: Readonly<{
    children: React.ReactNode;
}>) {
    return (
        <div className = "flex ">
            <div className = "lg:block hidden">
                <SideBar />
            </div>
            <div className = "lg:pl-64 pl-0 flex w-full h-full min-h-screen flex-col  bg-slate-300">
                <Header />
                <div className = "flex-1 text-black p-1 ">
                    {children}
                </div>
            </div>
        </div>
    );
}

это продукт/[продукт] и его комплектация (2900 модулей)

//app/prodcut/[slug]
"use client"
import { productSchema } from '@/components/CRUDTAB/validatorComponent'
import {AddProductField } from '@/data/ComponentData'
import {apiAddProduct } from '@/data/apiUrl'
import { columnProduct } from '@/data/listData';
import GetListComponent from '@/components/List/GetListComponent';


export default function page({ params }: { params: { slug: string } }) {
  return (
    <div>
      <GetListComponent
        slug = {'product'}
        querySlug = {'get'}
        columnData = {columnProduct}
        AddDataField = {AddProductField}
        dataSchema = {productSchema}
        apiAddData = {apiAddProduct} />
    </div>
  )


}

// GetListComponent.tsx
"use client"
import { useSearchParams } from 'next/navigation'
import React, { useEffect, useState } from 'react'
import LoadingScene from '@/components/LoadingScene'
import DataTable from '@/components/DataTable/DataTable'
import AddComponent from '@/components/CRUDTAB/AddComponent'
import getData from './getData'
type Props = {
  slug: string,
  querySlug:string,
  columnData:any,
  AddDataField:any,
  dataSchema:any,
  apiAddData:string
}

export default function GetListComponent(props: Props) {
  const searchParams = useSearchParams();
  const size = searchParams.get('size');
  const page = searchParams.get('page');
  const [data, setData] = useState<object[]>([])
  const [loading,setLoading] = useState(true);
  useEffect(() => {
    const fetchData = async () => {
      try {
        const result = await getData(props.slug,props.querySlug, size, page);
        console.info("result",result)
        setData(result);
      } catch (error) {
        setData([]);
      }
    };

    fetchData();
    setLoading(false);
  }, [props.querySlug, size, page]);
  const [openAdd, setOpenAdd] = useState(false);
  return (
    <div className='w-full h-full flex flex-col'>
      {props.slug}
      <div className='m-5'>
        <button onClick = {() => setOpenAdd(!openAdd)} className = "bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
          Add Customer
        </button>
      </div>
      {loading ? <LoadingScene /> : <DataTable columns = {props.columnData} rows = {data} slug = {props.slug} />}
      <div>
        {openAdd && <AddComponent componentData = {props.AddDataField} validValueSchema = {props.dataSchema} slug = {'Cutomer'} setOpen = {setOpenAdd} apiUrl = {props.apiAddData} />}
      </div>
    </div>
  )
}

Как сделать быструю загрузку

Вот почему люди используют упаковщики, такие как Webpack или Vite или что-то еще, чтобы выполнить всю работу по разрешению импорта и создать гораздо более эффективную упаковку скриптов.

Pointy 09.04.2024 19:28
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Итак, прежде всего. Вам нужны все эти теги «использовать клиента»? Если вы затем запрашиваете данные, обычно вам следует делать это на сервере.

Во-вторых, ваша проблема: может быть, ваш DataTable отображает слишком много компонентов?

Другие вопросы по теме

Похожие вопросы

Создание уникального значения флажка в многоразовом компоненте. Реагировать нативный
Как установить состояние сложного объекта в React?
Как разместить элемент управления «Лифлет» (временная шкала) внизу под элементом управления атрибуцией (например, MerrySky)
Пользовательский раскрывающийся список с (переключателями и флажками) в реакции. возможный?
Ошибка: прочтите ECONNRESET в TCP.onStreamRead (узел: внутренний/stream_base_commons: 217:20)
Понимание связи между EventEmitter в Node.js и addEventListener в браузере
Docxtemplater – использование нескольких фильтров | Формат для конкретной страны и пользовательские десятичные дроби
Плохой INP при нажатии на внешнюю ссылку
Таблицы данных: добавление входных данных для поиска по отдельным столбцам
Yarn устанавливает локальный пакет npm так, чтобы локальный пакет использовал node_modules основного проекта (ошибка ckeditor-duduced-modules)