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

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

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组件中,也可以使用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组件和其他子组件。


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

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