0

在我们的项目中,我们使用React Routerhistory包来管理路由。我们还使用xstate进行状态管理。我想知道是否不仅可以使用历史包检测路由更改,还可以阻止重新路由到另一个页面,以防有任何未保存的参数。这是我现在正在使用的一段代码:

  React.useEffect(() => {
    history.listen((location, action) => {
      if(location.pathName === '/master')
      {
        history.block()
        send('ROUTE_CHANGE_INITIATED')
      }
    })
  }, [])

但这只会在路由已经更改后阻止重新路由,例如我离开了我不应该离开的页面,然后重新路由被阻止。我想要做的是在路线实际改变之前阻止重新路由。这甚至可以从组件内部实现吗?我不想将此代码添加到<Route />组件或层次结构中的更高级别。

4

0 回答 0