Next.js 13 App 目录中在 Layout 获取数据并传给 Page 内容

在 Next.js 13 的 App 目录中,可以使用 getInitialProps 方法在 Layout 组件中获取数据,并将数据传递给 Page 组件。

步骤一:在 Layout 组件中获取数据

首先,在 Layout 组件中定义一个静态方法 getInitialProps,该方法可以使用 Next.js 提供的数据获取方法,例如 fetchaxios,获取所需数据并返回一个包含数据的对象。

import fetch from 'isomorphic-unfetch';

const Layout = (props) => (
  <div>
    <h1>My App</h1>
    {props.children}
  </div>
);

Layout.getInitialProps = async function() {
  const res = await fetch('https://api.example.com/data');
  const data = await res.json();

  return { data };
};

export default Layout;

步骤二:在 Page 组件中获取数据

然后,在 Page 组件中,也可以使用 getInitialProps 方法来获取数据。在 getInitialProps 方法中,可以通过 Layout.getInitialProps 方法获取数据,并将其作为 props 传递给 Page 组件。

const Page = (props) => (
  <div>
    <h2>Page</h2>
    <p>{props.data}</p>
  </div>
);

Page.getInitialProps = async function() {
  const { data } = await Layout.getInitialProps();
  return { data };
};

export default Page;

解释

在上面的示例中,Layout 组件使用 getInitialProps 方法获取数据,并将数据作为 props 传递给 Page 组件。Page 组件也使用 getInitialProps 方法获取数据,并将数据作为 props 传递给自己的子组件。这样,就可以在 Layout 组件中获取数据,并将数据传递给 Page 组件和其他子组件。

Next.js 13 App 目录中在 Layout 组件获取数据并传递给 Page 组件

原文地址: https://www.cveoy.top/t/topic/l6Ii 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录