Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在页面加载之前,在单击时验证路由_Javascript_Reactjs_Next.js_Url Routing - Fatal编程技术网

Javascript 在页面加载之前,在单击时验证路由

Javascript 在页面加载之前,在单击时验证路由,javascript,reactjs,next.js,url-routing,Javascript,Reactjs,Next.js,Url Routing,在Next.js中,如何在加载路由之前验证路由 根据routeChangeStart在路线更改之前被触发,但是,一旦触发,我无法取消该事件 useEffect(() => { events.on("routeChangeStart", routerChangeHandler); return (() => events.off("routeChangeStart", routerChangeHandler)); });

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

根据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');

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

  events.on('routeChangeStart', () => {
    throw new Error('AbortError');
  });
您还可以尝试调度
routeChangeError

 events.emit('routeChangeError');

请提供您的整个文件,您确定正在访问
路由器.events
?请提供您的整个文件,您确定正在访问
路由器.events