【发布时间】:2019-08-26 01:41:42
【问题描述】:
所以基本上我们在自定义pages/_app.jsx 中有一个初始获取,它首先获取页眉/页脚的站点设置和导航。我希望只获取一次此数据,但是它会在每个 routechange 客户端获取。无论如何,在应用容器中初始提取后是否需要保留一些数据?
这是我的代码:
import React from 'react'
import App, { Container } from 'next/app'
import Header from '../components/Header';
import Footer from '../components/Footer';
class MyApp extends App {
static async getInitialProps({ Component, router, ctx }) {
let pageProps = {}
const res = await fetch(`http://localhost:3000/navigation`)
const nav = await res.json();
const ss = await fetch(`http://localhost:3000/site-settings`);
const settings = await ss.json();
var culture = "en-us";
var root = {};
if (Component.getInitialProps) {
pageProps = await Component.getInitialProps(ctx)
if (pageProps && pageProps.pageContext) {
culture = pageProps.pageContext.culture || "en-us";
root = nav.message.find(nav => !nav.parentPage && nav.culture === culture);
}
}
return {
pageProps,
navigation: nav.message,
settings,
culture,
root
}
}
问题是我的_app.jsx 的 getInitialProps 正在每条路由上运行,发出不必要的请求以获取客户端已有的数据。
【问题讨论】:
-
取而代之的是在
_document中获取数据 -
@joelgullander 我面临着类似的问题。您能分享一下您遵循的策略吗?
标签: javascript reactjs next.js