用户登录

新建一个页面,放在 app/login 目录的下面,名字是 page.tsx,文件里定义一个组件,名字是 Page。

这个页面的路由地址应该是 login,在浏览器,访问一下 /login 这个地址,这里显示的就是 login/page。

Head

在项目里再新建一个文件,放在 app/login 的下面,名字是 head.tsx,文件里定义一个组件,名字是 Head,在组件的视图里面用一组 Fragment,里面添加一组 title 元素,包装的文字是 “用户登录 - 宁皓网”。

在浏览器观察一下登录页面的标签栏里的文字,现在是 “用户登录 - 宁皓网”。

组件

回到 login/page,在这个组件里面解构一下 useLogin(),需要的是 name,setName,password,setPassword,还有 login 这些东西。

因为这个 useLogin 自定义的 hook 里面用了 useState,所以这个组件必须得是一个客户端组件 。在文件顶部,用一下 use client 这个指令。

在组件的视图这里可以先用一组 form 元素,绑定 onSubmit 事件,直接提供事件处理,有个 event 参数,用一下 event.preventDefault()。

在里在添加一组 div,在它里面再添加一个 text 类型的 input,placeholder 占位符文字设置成 “名字”,autoComplete 是 username,value 可以绑定 name,设置一下 onChange ,提供一个事件处理,有个 event 参数,在里面用一下 setName,把 event.currentTarget.value 交给这个函数。

下面再准备一个密码字段,复制一份,修改一下 input 元素的 type,改成 password,添加一个密码字段 ,占位符文字是“密码”,autoComplete 设置成 current-password。value 是 password,onChange 事件处理里面用一下 setPassword,把 event.currentTarget.value 交给这个函数。

再准备一个提交按钮,一组 div,里面添加一组 button 元素,按钮文字是“登录”,绑定 onClick 事件,用 login 来处理这个事件。

测试

在浏览器测试一下,在这个登录页面,输入登录的用户的名字,还有用户的密码。然后点击“登录”,页面被刷新了。这是因为在这个 form 元素的 onSubmit 事件发生的时候,需要执行一下 event.preventDefault()。

回到浏览器再测试一下,输入用户名,还有密码,点击登录。成功以后在控制台会输出成功登录以后得到的响应,里面有用户的 id,name 还有 token。

准备用户登录页面《 Next.js:身份验证 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点