栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

当路由在Next.js中处于活动状态时,将目标活动链接定位

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

当路由在Next.js中处于活动状态时,将目标活动链接定位

首先,您需要有一个名为link的组件,其临时属性为activeClassName

import { withRouter } from 'next/router'import link from 'next/link'import React, { Children } from 'react'const Activelink = ({ router, children, ...props }) => {  const child = Children.only(children)  let className = child.props.className || null  if (router.pathname === props.href && props.activeClassName) {    className = `${className !== null ? className : ''} ${props.activeClassName}`.trim()  }  delete props.activeClassName  return <link {...props}>{React.cloneElement(child, { className })}</link>}export default withRouter(Activelink)

然后,使用带有创建的组件链接和CSS选择器的导航栏

:active
来区分活动链接和非活动链接。

import link from './link'export default () => (  <nav>    <style jsx>{`      .active:after {        content: ' (current page)';      }      .nav-link {        text-decoration: none;        padding: 10px;        display: block;      }    `}</style>    <ul>      <li>        <link activeClassName='active' href='/'>          <a className='nav-link home-link'>Home</a>        </link>      </li>      <li>        <link activeClassName='active' href='/about'>          <a className='nav-link'>about</a>        </link>      </li>    </ul>  </nav>)

之后,您可以在页面上实现导航栏:

import Nav from '../components/Nav'export default () => (  <div>    <Nav />    <p>Hello, I'm the home page</p>  </div>)

如何工作的关键位于组件link内,我们将link中的

router.pathname
with
值与属性进行比较
href
,如果该值与另一个属性匹配,则放置特定的className以使该链接看起来已激活。

参考:这里



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/387520.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号