我正在尝试使用react-router有条件地重定向到模式中的其他页面。
我已经在相关组件的底部以及connect函数中实现了withRouter。我目前没有使用Reducer,因为我在根模式组件中有一个开关,它捕获一个类型,然后渲染一个组件。下面是交换机的一个片段。
case type.componentName
return <Redirect to='/component' />
break;
但是,新组件仍未呈现。就好像Redirect根本没有注册一样。我的路线在下面。
<App>
<Switch>
<Route path="/" component={HomePage} />
<Route component={upperComponent}>
<Route path="/modal" component={rootComponent}>
<Route path="/component" component={component} />
</Route>
</Route>
</Switch>
</App>
我最初通过布尔值修改状态来渲染页面,并且基于它,将呈现不同的组件。这工作得很好,但我宁愿在渲染新页面时使用React-Router。关于我如何调用Redirect或者我是否应该使用完全不同的策略,是否存在根本性的错误?
评论中要求提供以下代码。这是在我的容器组件中,每个组件有一个。
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import rootComponent from '../components/rooComponent';
import { withRouter } from 'react-router-dom';
import * as rootComponentlActions from '../actions/rootComponent';
function mapStateToProps(state) {
return {
};
}
function mapDispatchToProps(dispatch) {
return bindActionCreators(rootComponentActions, dispatch);
}
export default withRouter(connect(mapStateToProps, mapDispatchToProps)(rootComponent));
我还尝试在我的子组件中将export default withRouter(component);
添加到根目录和根目录中,以根据我过去阅读的一些示例对其进行测试。据我所知,它没有区别,无论好坏。