我有页面,可以有2个参数之一。电子邮件和哈希,如果没有目前我想重定向用户。
/confirm-email?email=user@email.com
我已尝试以下方法:
const router = useRouter();
const { email, hash } = router.query;
useEffect(() => {
if (!email && !hash) {
router.push('/');
} else if (hash) {
// Do stuff
}
}, [email, hash, router]);
但第一次渲染时的问题是undefined
,即使存在哈希或电子邮件参数,用户也会被重定向。
我该如何解决这个问题?有什么建议吗?
3条答案
按热度按时间4xrmg8kj1#
在做了一些研究之后,我发现最好检查参数是否存在于
getServerSideProps()
中myss37ts2#
您可以检查窗口对象,这样您的代码将只在您有URL时运行,以防止未定义的问题
mznpcxlj3#
看起来没必要。
和
query:Object -解析为对象的查询字符串。如果页面没有数据提取要求,则在预呈现期间它将是空对象。默认为{}
引用https://nextjs.org/docs/api-reference/next/router
我想这就是问题的所在。
参数将是Router.query中的文件名
例如:
对于文件[pid].js,位于页/多页/[pid].js中
或者,要使用两个参数选项,你需要访问一个同时使用这两个选项的网站页面,所以它们之间必须有一个标签。
如“网站/电子邮件/散列”