【发布时间】:2022-07-23 15:23:04
【问题描述】:
我有一个 Next.js 服务器端渲染应用程序,我需要在其中动态加载组件。
例如 Homepage,我在 getServerSideProps 中调用 API 来获取主页数据,其中包含有关页面的一些基本信息以及所有组件的名称和每个组件的数据。从这里我需要在页面正文中动态呈现这些组件。并且这些动态组件需要在服务器上进行渲染以进行 SEO。
这是我的简化代码
import Head from 'next/head';
import Header from '../components/Header';
import Banner from '../components/Banner';
import { getDomainFromContext, getParamFromContext } from '../src/utils';
import { fetchPage } from '../src/fetchers';
export async function getServerSideProps(context) {
const domain = getDomainFromContext(context);
const locale = getParamFromContext(context, 'locale');
const uri = '/';
const page = await fetchPage(domain, uri, locale);
/*
page now has names of the components with data for each component. e.g
{
...
components : {
{
"name" : "Venues",
"data" : "..."
},
{
"name" : "Info",
"data" : "..."
}
}
...
}
*/
return {
props: {
domain: domain,
locale: locale,
page: page
},
};
}
function Home(props) {
return (
<>
<Head>
<title>Create Next App</title>
<meta name="description" content="Generated by create next app" />
<link rel="icon" href="/favicon.ico" />
</Head>
<Header>
<h1>Homepage</h1>
</Header>
<main>
<Banner />
{/*Load Dynamic components here & it should be server side rendered.*/}
</main>
</>
);
}
export default Home;
【问题讨论】:
-
谢谢@kazmi066。我认为这会奏效。我忽略了最初认为它仅用于客户端上的延迟加载组件。但我认为它也适用于 SSR。将很快发布完整的代码 sn-p 以及使用动态导入的解决方案。
标签: javascript reactjs next.js