登录・注册
实现邮箱和密码的校验、提交中的显示,以及登录之后的页面显示。
这段代码由 2 个文件组成。把它们放进同一个文件夹就能运行
LoginTabs.tsx
登录・注册页面
auth.tsx
在各处共享登录中的用户信息(实际项目中换成 NextAuth 等)
使用方法(Next.js)
在自己的项目里显示这个页面的 3 个步骤
- 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
把文件粘贴到这个位置
my-app/ ├─ components/ │ └─ login/ │ ├─ LoginTabs.tsx ← 从上面的窗口复制的 │ └─ auth.tsx ← 从上面的窗口复制的 └─ app/ └─ login/ └─ page.tsx ← 在第 3 步创建
文件夹不存在就新建。所有文件都放进同一个文件夹
- 3
在页面文件中导入
import LoginTabs from "@/components/login/LoginTabs" export default function Page() { return <LoginTabs /> }写在 app/login/page.tsx 中。运行 npm run dev,打开 /login 就能看到
要点
- 1
校验规则集中在一处
用 Zod 把“邮箱格式”“至少 8 个字符”写在一起,错误提示也在那里定好。注册只是在登录的规则上再加一个“名字”。
- 2
提交中禁用按钮
这样可以防止重复提交。同时把按钮文字改成“登录中…”,让用户知道需要稍等。
- 3
把登录用户的信息分发给整个应用
放进 Context 后,页头的名字和内容区的“欢迎”都能使用它。
使用的工具
点击查看第 2 部分的比较