Reactjs useRouter查询返回getServerSideProps内部未定义的
我正在使用useRouter从查询中的用户那里获取一些数据。我可以看到HTML格式的查询数据。但是当我在Reactjs useRouter查询返回getServerSideProps内部未定义的,reactjs,next.js,Reactjs,Next.js,我正在使用useRouter从查询中的用户那里获取一些数据。我可以看到HTML格式的查询数据。但是当我在getServerSideProps中传递search时,它返回undefined 函数SearchData(){ const router=useRouter() const{search}=router.query 返回( {search} ) } 导出异步函数getServerSideProps({search}){ console.log(搜索) }您不应该通过getServerSi
getServerSideProps
中传递search
时,它返回undefined
函数SearchData(){
const router=useRouter()
const{search}=router.query
返回(
{search}
)
}
导出异步函数getServerSideProps({search}){
console.log(搜索)
}
您不应该通过getServerSideProps中的搜索
当你访问http://localhost/page?search=abc,您可以从query.search检索abc
export async function getServerSideProps({query}) {
console.log('req.query', query)
//do something with the parameter. in this instance - query.search
return {
props: {}, // will be passed to the page component as props
}
}
如果您不使用serverSideProps,并且希望获取搜索查询字符串,则需要使用useEffect,并等待路由器准备就绪
范例
const [ query, setQuery ] = useState()
const router = useRouter()
useEffect(() => {
if (router.isReady) {
setQuery(router.query)
//query.search will then contain the search param
}
}, [router])
您不应该通过getServerSideProps中的搜索 当你访问http://localhost/page?search=abc,您可以从query.search检索abc
export async function getServerSideProps({query}) {
console.log('req.query', query)
//do something with the parameter. in this instance - query.search
return {
props: {}, // will be passed to the page component as props
}
}
如果您不使用serverSideProps,并且希望获取搜索查询字符串,则需要使用useEffect,并等待路由器准备就绪
范例
const [ query, setQuery ] = useState()
const router = useRouter()
useEffect(() => {
if (router.isReady) {
setQuery(router.query)
//query.search will then contain the search param
}
}, [router])
函数接受上下文
作为参数,上下文
有一个查询
对象,该对象允许您访问查询字符串
<> >而不是破坏<代码>搜索< /代码>考虑破坏<代码>查询< /代码>,并使用它类似于
导出异步函数getServerSideProps({query}){
console.log(query.search)
}
该函数将上下文
作为参数,上下文
有一个查询
对象,您可以通过该对象访问查询字符串
<> >而不是破坏<代码>搜索< /代码>考虑破坏<代码>查询< /代码>,并使用它类似于
导出异步函数getServerSideProps({query}){
console.log(query.search)
}