[英]Why I use params in getInitialProps they are undefined when build in Next.js
我在 Next.js 中有這個問題。 我在getInitialProps
調用 API 並將params
傳遞給我的組件,然后當我在 mu 項目中使用它時它可以工作。 但是當我想構建它時,它給我的錯誤是params
是undefined
。
這就是我調用 API 並將其傳遞給組件的方式:
import BlogItem from './blogItem'
import axios from 'axios'
import { withRouter } from 'next/router'
import { APIURL, replaceAll } from '../../../components/config'
const Post = (props) => {
return (
<BlogItem
services ={props.services }
/>
)
}
Post.getInitialProps = async ({ query }) => {
const id = query.id
const urlTitle = encodeURI(query.title)
const services = null;
try {
const response = await axios.get(`${APIURL}getservice`);
services = response.data.response.posts;
} catch (err) {
console.error(err)
}
return {
services
}
}
export default withRouter(Post)
您似乎將服務定義為包含null
的const
! 整個代碼看起來不錯。 嘗試更改 const 以讓:
Post.getInitialProps = async ({ query }) => {
const id = query.id
const urlTitle = encodeURI(query.title)
let services = null; //this line
try {
const response = await axios.get(`${APIURL}getservice`);
services = response.data.response.posts;
} catch (err) {
console.error(err)
}
console.log(services) //you should have the data right here
return {services}
}
例子:看看這個例子。 運行它並導航到/about
頁面:
您需要確保將您的 url 參數傳遞到服務器上的查詢字符串中,在您的情況下,如下所示:
server.get('/page/:uid/:id', (req, res) => {
const mergedQuery = Object.assign({}, req.query, req.params)
return app.render(req, res, '/page', mergedQuery);
})
然后您的 getInitialProps 可以直接從查詢中獲取它們,而不管它在哪里加載。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.