如何在不丢失 header 组件状态的情况下在 nextjs 中导航

How to navigate in nextjs without losing state of header component

有什么方法可以create/structure next.js 应用导航而不丢失 header 组件状态?

让我解释一下。

我有 header 个这样的组件:


import { useState } from "react"
import Link from 'next/link'

export const Header = () => {
  const [value, setValue] = useState(1)

  return (
    <header>
      HEADER
      <button onClick={() => setValue(value + 1)}>
        {value}
      </button>
      <ul>
        <li>
          <Link href="/">
            <a>Home</a>
          </Link>
        </li>
        <li>
          <Link href="/test">
            <a>About Us</a>
          </Link>
        </li>
      </ul>
    </header>
  )
}

export default Header

有一个简单的计算器。

我有两个页面。 索引:

const Home = () => (
  <div className="container">
    <Header />
    <main>
      Index
    </main>
  </div>
)

测试:

import Head from 'next/head'
import Header from '../components/header'

const Home = () => (
  <div className="container">
    <Header />
    <main>
      Test
    </main>
  </div>
)

export default Home

我想在这些页面之间导航而不丢失 header 组件的状态。有可能吗?

您可以做的一件事是将整个 Next.js 应用程序包装在包含 <Header/> 的布局组件中。查看我创建的这个沙箱,了解如何将此模式应用于您问题中的示例:

https://codesandbox.io/s/so-q-63755826-b-forked-7xt6u

查看这篇很棒的文章,它解释了这种模式以及在 Next.js 中持久布局的一些其他解决方案:

https://adamwathan.me/2019/10/17/persistent-layout-patterns-in-nextjs/