_app.js
和<Link>
_app.js
中调用错误。Can't Get Fetch Data
,如下所示。<Header>
的数据,getInitalProps()
中实现了数据获取代码_app.js
是常见的容器,<Header>
之类的常见事物总是呈现// root/pages/_app.js
const App = ({ Component, pageProps, datas }) => {
return (
<div id="wrapper">
<Provider store={store}>
<Header data={datas} />
<Component {...pageProps} />
<Footer data={datas} />
</Provider>
</div>
)
}
App.getInitialProps = async ({ Component, res, ctx }) => {
let pageProps = {}
let gnb_menu;
console.log(Component.getInitialProps);
if (Component.getInitialProps) {
pageProps = await Component.getInitialProps(ctx)
gnb_menu = await axios.get([data url something]);
}
return {
pageProps,
datas: gnb_menu.data.menu,
}
}
export default App;
<Link
href={`/category`}
as={`/category`}
>
import React from 'react'
import { useRouter } from 'next/router'
const Content = () => {
console.log('contentsss');
const router = useRouter();
const { id, content } = router.query
return (
<div>
ca/contents
<h1>{id}</h1>
<h2>{content}</h2>
</div>
)
}
export default Content
感谢您的时间:)
答案 0 :(得分:0)
您的getInitialProps
函数允许访问gnb_menu
而不进行初始化。仅在定义了gnb_menu
的情况下设置Component.getInitialProps
。如果不是,那么gnb_menu
将保持未定义状态,您将得到Cannot read property 'data' of undefined
,因为gnb_menu.data.menu
无法处理。
尝试添加如下所示的console.log
来了解您的axios.get
调用返回的结果,或者甚至执行该调用。这样应该可以提示您出了什么问题。
App.getInitialProps = async ({ Component, res, ctx }) => {
let pageProps = {}
let gnb_menu;
console.log(Component.getInitialProps); // <-- what did this display?
if (Component.getInitialProps) {
pageProps = await Component.getInitialProps(ctx)
gnb_menu = await axios.get([data url something]);
console.log(">>>gnb_menu",gnb_menu); // <-- does this show anything?
}
return {
pageProps,
datas: gnb_menu.data.menu,
}
}
无论如何,您都会遇到不安全的情况,因为您未定义gnb_menu
并允许在尝试访问它之前从未设置过的代码路径。如果Component.getInitialProps
可能不存在,那么您可能想要返回这样的默认值:
return {
pageProps,
datas: gnb_menu && gnb_menu.data ? gnb_menu.data.menu : null
}