在我们的项目中,我们使用React Router和history包来管理路由。我们还使用xstate进行状态管理。我想知道是否不仅可以使用历史包检测路由更改,还可以阻止重新路由到另一个页面,以防有任何未保存的参数。这是我现在正在使用的一段代码:
React.useEffect(() => {
history.listen((location, action) => {
if(location.pathName === '/master')
{
history.block()
send('ROUTE_CHANGE_INITIATED')
}
})
}, [])
但这只会在路由已经更改后阻止重新路由,例如我离开了我不应该离开的页面,然后重新路由被阻止。我想要做的是在路线实际改变之前阻止重新路由。这甚至可以从组件内部实现吗?我不想将此代码添加到<Route />
组件或层次结构中的更高级别。