В моем следующем js проекте у меня есть компонент Layout, который требует вызова API. Вместо того, чтобы вызывать вызовы API на каждой странице (./ pages / *), я бы хотел поместить logi c в некоторое глобальное пространство. Я немного исследовал, и похоже, что переопределение _app. js - это путь к go, указанный в следующей js документации (https://nextjs.org/docs/advanced-features/custom-app).
Я положил код, как показано ниже. Но, похоже, это не работает.
. / Pages / _app. js
function MyApp({ Component, appProps, results }) {
return (
<Layout {...results}>
<Component {...appProps} />
</Layout>
)
}
MyApp.getInitialProps = async (appContext) => {
const appProps = await App.getInitialProps(appContext)
const results = await getResults() //api call
return { appProps, results }
}
. / Components / Layout. js
const Layout = ({ children, results }) => {
return (
<React.Fragment>
<Header/>
<div className='row col-md-8 offset-md-2'>
{JSON.stringify(results)} //results is nothing here
<div className='col-md-9'>
{children}
</div>
</div>
</React.Fragment>
)
}
. / pages / index. js
...
return (
<>
{head()}
<Layout>
<div className='row col-md-12'>
{showContents()}
</div>
</Layout>
</>
)
Я уверен, что упускаю некоторые очевидные вещи. Любая помощь будет оценена.