该页未在nextjs中显示,为什么?为什么?

4si2a6ki  于 2023-10-18  发布在  其他
关注(0)|答案(2)|浏览(106)

我正在用nextjs构建一个web应用程序。我有麻烦了。pages目录下的sign_up组件不会呈现。这是一张白纸。我在Chrome扩展程序中查找了详细信息,得到了这个警告。

Unhandled Runtime Error
Error: Maximum update depth exceeded. 
This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. 
React limits the number of nested updates to prevent infinite loops.

下面是components/SignUp目录下的index.tsx文件。

// SignUp/index.tsx 

import type { FC } from "react";

export const SignUp: FC = () => {
  return (
    <>
      <h1>user registration</h1>
    </>
  );
};

forrowing是pages目录下的sign_up组件。

pages/sign_up.tsx

import { SignUp } from "../components/SignUp";
import { Layout } from "src/layouts/Layout";

const SignUpPage = () => {
  <>
    <Layout pageTitle="Sign Up">
      <SignUp />
    </Layout>
  </>
};

export default SignUpPage;

以下是文件结构。

.
└── frontend/
    └── src/
        ├── api
        ├── components/
        │   ├── Dashboard
        │   ├── Login
        │   ├── MyTodo
        │   └── SignUp/
        │       ├── index.tsx
        │       └── schema.ts
        ├── layouts
        ├── pages/
        │   ├── _app.tsx
        │   ├── _error.tsx
        │   ├── 404.tsx
        │   ├── dashboard.tsx
        │   ├── index.tsx
        │   ├── my_todo.tsx
        │   └── sign_up.tsx      
        ├── styles
        └── util

虽然在图像中显示了my_todo页面,但使用类似的结构(只有h1标签和表单)创建的页面显示没有问题。我想知道为什么。如果有人知道,请告诉我。

fzwojiic

fzwojiic1#

问题是,在您的sign_up.tsx文件中,您缺少return。应该是这样的:

const SignUpPage = () => {
  return (
    <>
      <Layout pageTitle="Sign Up">
        <SignUp />
      </Layout>
    </>
  );
};

此外,您正在不必要地使用片段。您可以通过删除它们来简化代码,并像这样返回JSX:

const SignUpPage = () => {
  return (
    <Layout pageTitle="Sign Up">
      <SignUp />
    </Layout>
  );
};

查看文档here以了解更多信息。

wdebmtf2

wdebmtf22#

我认为在return语句中有SignUpPage组件没有返回JSX。试试这个修正版本:

import { SignUp } from "../components/SignUp";
import { Layout } from "src/layouts/Layout";

const SignUpPage = () => (
  <Layout pageTitle="Sign Up">
    <SignUp />
  </Layout>
);

export default SignUpPage;

希望这对你有帮助。

相关问题