首页 > 解决方案 > 在点击和页面加载之前验证路由

问题描述

在 Next.js 中,我将如何在加载之前验证路由?

根据API docsrouteChangeStart在路由更改之前触发,但是,一旦触发,我将无法取消该事件。

  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;
    }
  };

标签: javascriptreactjsnext.jsurl-routing

解决方案


您可以尝试抛出错误以取消导航:

  events.on('routeChangeStart', () => {
    throw new Error('AbortError');
  });

您也可以尝试发送routeChangeError

 events.emit('routeChangeError');

推荐阅读