用户登录

下面我们去定制一个可以区分激活状态的链接组件,放在 app/components 里面,文件的名字叫 nav-link.tsx ,文字里定义一个组件,名字叫 NavLink。

把这个组件标记成一个客户端组件,在文件顶部添加一行文字, 'use client'。

设置一下这个组件的属性类型,添加一个 children 属性,类型是 ReactNode,再添加一个 href 属性,类型是 string。

在组件里面声明一个 pathname,用一下 Next.js 提供的 usePathname 这个 hook,它会返回当前地址的路径名。这个 hook 来自 next/navigation 。

设置一下组件的视图,用一组 Link 组件,设置一下 href 属性,值是 props.href,再设置一下它的 className 属性,判断一下 pathname 是否等于 props.href ,如果是的话就添加一个 active 这个类,不然就是一个空白。

Link 里面包装的东西可以绑定输出 props.children。

样式

打开 global.css 这个样式表,在里面添加一段样式,选择器可以使用 a.active ,把 font-weight 设置成 bold,再把 color 设置成 black。

使用

打开 app/layout,在组件的视图里的

这个元素里面,再添加一个

复制一份,文字改成“内容”,这个 NavLink 的 href 属性的值改成 /posts。

测试

在浏览器测试一下,访问一下 “关于”,你会发现这个菜单项目文字会加粗显示,检查一下这个元素,在这个 a 元素的上面,会有一个 .active 类。这个类会给这个元素添加一些额外的样式,比如让文字加粗显示。

再点一下“内容”这个菜单项目,打开了内容页面以后,在这个菜单项目元素上,会添加一个 .active 类。

定义包含激活状态的链接组件(NavLink)《 Next.js:应用路由 》

统计

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

社会化网络

关于

微信订阅号

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