登录・注册

实现邮箱和密码的校验、提交中的显示,以及登录之后的页面显示。

这段代码由 2 个文件组成。把它们放进同一个文件夹就能运行

LoginTabs.tsx

登录・注册页面

auth.tsx

在各处共享登录中的用户信息(实际项目中换成 NextAuth 等)

使用方法(Next.js)

在自己的项目里显示这个页面的 3 个步骤

  1. 1

    在终端安装要用的组件和库(只需一次)

    npx shadcn@latest add button input label tabs
    npm i react-hook-form zod
    npm i @hookform/resolvers

    如果项目还没有安装 shadcn/ui,先运行一次 npx shadcn@latest init

  2. 2

    把文件粘贴到这个位置

    my-app/
    ├─ components/
    │   └─ login/
    │       ├─ LoginTabs.tsx   ← 从上面的窗口复制的
    │       └─ auth.tsx   ← 从上面的窗口复制的
    └─ app/
        └─ login/
            └─ page.tsx   ← 在第 3 步创建

    文件夹不存在就新建。所有文件都放进同一个文件夹

  3. 3

    在页面文件中导入

    import LoginTabs from "@/components/login/LoginTabs"
    
    export default function Page() {
      return <LoginTabs />
    }

    写在 app/login/page.tsx 中。运行 npm run dev,打开 /login 就能看到

要点

  1. 1

    校验规则集中在一处

    用 Zod 把“邮箱格式”“至少 8 个字符”写在一起,错误提示也在那里定好。注册只是在登录的规则上再加一个“名字”。

  2. 2

    提交中禁用按钮

    这样可以防止重复提交。同时把按钮文字改成“登录中…”,让用户知道需要稍等。

  3. 3

    把登录用户的信息分发给整个应用

    放进 Context 后,页头的名字和内容区的“欢迎”都能使用它。

使用的工具

点击查看第 2 部分的比较