You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React(Next.js)中如何基于动态URL变量使用if else条件渲染

Next.js 基于路由路径的条件渲染实现

JSX语法中不能直接在return的节点内写常规if/else语句,二选一的渲染场景直接用三元表达式实现即可,这是React条件渲染最常用的写法,直接替换你代码里div标签内的注释部分就能生效。

基础实现代码

import { useRouter } from 'next/router'
const Header = () => {
  const router = useRouter();
  const url = router.asPath;

  return (
    <>
      <div>
        {url === '/' 
          ? /* 匹配到首页路径时渲染的第一个头部 */ <div>首页专属头部内容</div>
          : /* 其余路径渲染的第二个头部 */ <div>全站通用头部内容</div>
        }
      </div>
    </>
  )
}

注意事项

  • 三元表达式的固定写法是{判断条件 ? 条件成立渲染内容 : 条件不成立渲染内容},支持直接引用组件内定义的动态变量做判断。
  • 如果你的首页可能携带查询参数(比如/?channel=wechat这种带?后缀的链接),用router.asPath判断会匹配失败,建议换成router.pathname做判断,pathname返回的是不带查询参数的纯路由路径,不会因为链接带参数出现误判,替换取值代码即可:
    const { pathname } = router;
    // 后续判断用 pathname === '/' 即可
    
  • 如果后续要扩展更多路径的头部匹配规则,可以把判断逻辑提前写到return外面,用变量承接渲染内容,逻辑会更清晰,示例代码如下:
    const Header = () => {
      const router = useRouter();
      const { pathname } = router;
      let headerNode;
    
      if (pathname === '/') {
        headerNode = <div>首页头部</div>
      } else if (pathname.startsWith('/user/')) {
        headerNode = <div>个人中心专属头部</div>
      } else {
        headerNode = <div>通用头部</div>
      }
    
      return (
        <>
          <div>{headerNode}</div>
        </>
      )
    }
    

内容的提问来源于stack exchange,提问作者amit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 21:57:23