我的Next.js之旅:第二天 - 路由与导航的秘密通道

242 阅读3分钟

嘿,朋友们!昨天我们一起踏入了Next.js的未来城市,今天我将带你们探索这座城市的秘密通道——路由与导航。准备好了吗?让我们开始吧!

1. 静态路由与动态路由

在这个城市中,每一条街道都有一个独特的地址,这就是Next.js中的路由。有两种主要的路由方式:

  • 静态路由:就像是我们城市的固定街道,每个地址都是预先定义好的。在Next.js中,我们只需要在pages目录下创建一个文件,Next.js就会自动为我们创建一个路由。例如,pages/about.js会映射到/about这个URL。
  • 动态路由:而动态路由就像是城市中的可变街道,可以根据参数改变。在Next.js中,我们可以在文件名中使用方括号来定义动态参数。例如,pages/posts/[id].js可以映射到/posts/1/posts/2等URL。

2. 嵌套路由

有些街道是相互连接的,形成了更复杂的结构,这就是Next.js中的嵌套路由。通过在pages目录中创建子目录,我们可以实现嵌套路由。例如,pages/blog/[slug]/index.js会映射到/blog/hello-world这样的URL。

3. 使用组件进行导航

在这个城市中,我们有一个特别的向导——组件,它可以帮助我们在页面之间导航。使用组件,我们可以创建一个链接,点击后可以无刷新地导航到另一个页面。这就像是我们城市中的快速穿梭列车,可以带我们迅速到达目的地。

import Link from 'next/link';

function Home() {
  return (
    <div>
      <h1>Welcome to the Home Page!</h1>
      <Link href="/about">
        <a>About Us</a>
      </Link>
    </div>
  );
}

export default Home;

4. 使用命令式路由进行页面跳转

有时候,我们想要在城市中自由飞行,这就需要用到命令式路由。Next.js提供了一个router对象,它有一些方法可以帮助我们在代码中实现页面跳转。

  • router.push():就像是我们的飞行器,可以带我们飞往任何一个目的地。
  • router.replace():如果我们不想留下飞行痕迹,可以使用这个方法替换当前的历史记录。
  • router.prefetch():这个方法可以预加载页面,就像是我们提前准备好飞行路径,以便更快地到达目的地。
import { useRouter } from 'next/router';

function Home() {
  const router = useRouter();

  const goToAbout = () => {
    router.push('/about');
  };

  return (
    <div>
      <h1>Welcome to the Home Page!</h1>
      <button onClick={goToAbout}>Go to About</button>
    </div>
  );
}

export default Home;

5. 路由参数的传递与获取

在城市中,我们经常需要传递信息,Next.js也允许我们在路由参数中传递信息。我们可以通过查询字符串或者动态路由参数来传递信息,并在目标页面中获取这些信息。

  • 查询字符串:就像是写在信封上的地址,可以通过router.query来获取。
  • 动态路由参数:就像是包裹上的标签,可以通过router.query或者useParams钩子来获取。
// pages/post/[id].js
import { useRouter } from 'next/router';

function Post() {
  const router = useRouter();
  const { id } = router.query;

  return <h1>Post: {id}</h1>;
}

export default Post;

结语

今天我们一起探索了Next.js城市的秘密通道——路由与导航。我们已经学会了如何在城市中快速穿梭,并且知道了如何传递和获取信息。在接下来的日子里,我们将继续探索这座城市的更多秘密。如果你有任何疑问或者想要分享你的探险故事,请在评论区留言。明天,我们将一起揭开数据获取与状态管理的神秘面纱!记得带上你的地图和指南针!