我正在尝试下一个js13,我得到了一些错误,我不能修复。我的代码:
import { useRouter } from 'next/navigation';
async function getCheckoutInfo() {
const router = useRouter();
if (router.isReady) {
console.log('Router query:', router.query);
} else {
console.log('Router is not ready yet')
}
return 'test';
}
export default async function CheckoutPage() {
const info = await getCheckoutInfo();
return(
<div>
<h1>Checkout </h1>
<p>{info}</p>
</div>
)
}
我的错误消息:
Unhandled Runtime Error
Error: Cannot read properties of null (reading 'useContext')
Call Stack
Object.useContext
webpack-internal:///(sc_server)/./node_modules/next/dist/compiled/react/cjs/react.shared-subset.development.js (1428:31)
useRouter
webpack-internal:///(sc_server)/./node_modules/next/dist/client/components/navigation.js (91:32)
这里有什么问题吗?在我看来,useRouter并没有像预期的那样工作。之前我使用了useEffect(),它工作得很好,但是在nextjs 13中,我想你不需要这样做:https://beta.nextjs.org/docs/api-reference/use-router
提前感谢你帮我解开这个谜团。
1条答案
按热度按时间fnx2tebb1#
您只能在React函数组件的顶级内部调用
useRouter()
。不要在循环、条件或嵌套函数中调用挂钩。相反,应始终在React函数的顶层,在任何早期返回之前使用挂钩。
在此处了解有关挂钩规则的更多信息:https://reactjs.org/docs/hooks-rules.html
试试这样的,