Javascript 防止react路由器检测到位置更改
在我基于React/Redux的应用程序中,我实现了如下注销 在Javascript 防止react路由器检测到位置更改,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,在我基于React/Redux的应用程序中,我实现了如下注销 在reducers/index.js中,我创建了一个名为appReducer的应用程序级reducer。在那里,我检查注销操作,然后返回未定义 这一切都很好。我想做的是,对于注销操作,我还想清除本地存储并重定向到登录页面。请注意,我想重定向本机浏览器的方式,而不是使用反应路由器。如果我做了window.location='/'。首先它被react路由器检测到,我看到登录页面有一点,然后它刷新,这有点奇怪 有没有办法防止react ro
reducers/index.js
中,我创建了一个名为appReducer
的应用程序级reducer。在那里,我检查注销
操作,然后返回未定义
这一切都很好。我想做的是,对于注销
操作,我还想清除本地存储
并重定向到登录页面。请注意,我想重定向本机浏览器的方式,而不是使用反应路由器。如果我做了window.location='/'
。首先它被react路由器检测到,我看到登录页面有一点,然后它刷新,这有点奇怪
有没有办法防止react router在位置更改时收到通知 你不能完全阻止它,但你可以通过访问 历史。监听功能 使用React Router 4,您可以使用HOC withRouter包装顶级组件
export default withRouter(connect(mapStateToProps, mapDispatchToProps)(App));
这允许访问This.props.history并对其进行控制
class App extends Component {
constructor(props) {
super(props);
this.props.history.listen((location, action) => {
//here you can control the location change
});
}
render() {
return (
</div>
);
}
}
listenBefore不是上的函数history@earl3s似乎现在称为.block()()
history.listenBefore( (location, done) => doSomething(location).then(done) )