Javascript 如何在NextJS的getServerSideProps中获取useState值
我有两个函数,一个函数从用户那里获取输入,另一个函数搜索提供的输入数据。我想在Javascript 如何在NextJS的getServerSideProps中获取useState值,javascript,reactjs,next.js,Javascript,Reactjs,Next.js,我有两个函数,一个函数从用户那里获取输入,另一个函数搜索提供的输入数据。我想在getServerSideProps函数中使用searchQueryfromuseState。 有没有办法做到这一点 函数SearchDemo(){ 常量[searchQuery,setSearchQuery]=useState(“”) const ChangeHandler=事件=>{ setSearchQuery(event.target.value) } const ButtonHandler=事件=>{ ev
getServerSideProps
函数中使用searchQuery
fromuseState
。
有没有办法做到这一点
函数SearchDemo(){
常量[searchQuery,setSearchQuery]=useState(“”)
const ChangeHandler=事件=>{
setSearchQuery(event.target.value)
}
const ButtonHandler=事件=>{
event.preventDefault()
log(`Data:${searchQuery}`)
}
返回(
搜索:
搜寻
);
}
导出异步函数getServerSideProps({query:{page},searchQuery}){
console.log(searchQuery)
返回{
道具:{
数据:数据
}
}
}
您需要推送url并重新加载页面,因为它是服务器端呈现的
const router = useRouter()
const ButtonHandler = event => {
event.preventDefault()
router.push(`/thecurrentUrl?search=${searchQuery}`
// if doesn't work then use window.location.href
console.log(`Data: ${searchQuery}`)
}
export async function getServerSideProps({query: {page}, searchQuery}){
console.log(query.search)
return {
props: {
data: data
}
}
}
对我也搜索了一下,只找到了这个解决方案。我们必须使用router.push推送相同的URL,才能再次调用getServerSideProps。实际上,当页面已经加载时,不必调用getServerSideProps,您可以始终在组件中使用正常的获取。因此,如果您知道我的意思,您可以同时使用服务器端生成的搜索结果和正常的获取结果。