我使用具有上下文API和样式化组件的next.js,我似乎无法使getStaticProps工作。 我读过其他文章,经常会谈论我确实拥有的自定义_app,但是在使用上下文API之前我从未遇到过这个问题,我也尝试过getInitialProps函数,但无济于事。 我还应该注意,即使不包括上下文包装器,我也无法从函数中得到响应,因此根本无法确定应在哪里查找。
这是我的代码,你能看到什么吗?
import React from 'react';
import fetch from 'node-fetch';
export default function Header(props) {
console.log(props.hi);
return <div>Hey dis header</div>;
}
export async function getStaticProps(context) {
return {
props: {
hi: 'hello',
},
};
}
我已经尝试过从该函数进行日志记录,但是没有日志记录,因此我可以想象问题是该函数由于某种原因而没有运行
这里有我的自定义_app文件
import { GlobalContextWrapper } from 'context';
import Header from 'components/header/Header';
import App from 'next/app';
function MyApp({ Component, pageProps }) {
return (
<GlobalContextWrapper>
<Header />
<Component {...pageProps} />
<p>footer</p>
</GlobalContextWrapper>
);
}
MyApp.getInitialProps = async (appContext) => {
// calls page's `getInitialProps` and fills `appProps.pageProps`
const appProps = await App.getInitialProps(appContext);
return { ...appProps };
};
export default MyApp;
这是我的上下文文件
import { useReducer } from 'react';
import initialState from './intialState';
import reducer from './reducer';
import GlobalStyle from '../GlobalStyle';
import theme from '../theme';
import { ThemeProvider } from 'styled-components';
export const GlobalContext = React.createContext();
export function GlobalContextWrapper({ children }) {
const [globalState, dispatch] = useReducer(reducer, initialState);
return (
<GlobalContext.Provider value={{ globalState, dispatch }}>
<GlobalStyle />
<ThemeProvider theme={theme}>{children}</ThemeProvider>
</GlobalContext.Provider>
);
}
答案 0 :(得分:2)
问题是我不是从页面中导出此功能,而是从组件和自定义应用程序文件中导出。
有人知道我可以解决这个问题的方法吗?问题是我有一个从响应中获取数据的标头,并且我希望将此标头显示在每个页面上,而不必手动将其添加到每个页面上并重复执行getStaticProps函数
答案 1 :(得分:0)
基于代码的解决方案只是在scale_map
中获取数据并传递给_app.js - getInitialProps
Header