javascript - 在点击和页面加载之前验证路由
问题描述
在 Next.js 中,我将如何在加载之前验证路由?
根据API docs,routeChangeStart
在路由更改之前触发,但是,一旦触发,我将无法取消该事件。
useEffect(() => {
events.on("routeChangeStart", routerChangeHandler);
return (() => events.off("routeChangeStart", routerChangeHandler));
});
const routerChangeHandler = (url) => {
if(/* check something */){
// stop the new page load and stay on the page
return false;
}
};
解决方案
您可以尝试抛出错误以取消导航:
events.on('routeChangeStart', () => {
throw new Error('AbortError');
});
您也可以尝试发送routeChangeError
:
events.emit('routeChangeError');
推荐阅读
- angularjs - AngularJS:ui-select接受字符串而不是数组
- python - “命令不同步;您现在无法运行此命令”在 django 模型上运行分页器时
- javascript - 函数的返回值无法正常工作。如何为函数 checkIfExist() 设置正确的返回值?
- linux-kernel - 如何仅在 linux 中的 udp 数据包上生成网络损伤
- amazon-web-services - AWS Cognito 验证码长度更改
- javascript - 为什么这个递归 javascript 函数表达式返回未定义?
- json - 如何从 SQL Server 中的动态节点加载 OPENJSON
- spring-boot - Spring Boot 的 keycloak 启动器在哪里?
- python - 取决于计算 groupby 对象中两个列单元格之间的差异的列
- jetty - 如何发布表单参数?