登录后我只想要管理员组件,但我的登录组件仍然显示。
boot-client.tsx:
import * as RoutesModule from './routes';
function renderApp() {
ReactDOM.render(
<AppContainer>
<Provider store={store}>
<ConnectedRouter history={history} children={routes} />
</Provider>
</AppContainer>
,
document.getElementById('react-app')
);
}
routes.tsx:
export const routes = <div>
<PrivateRoute component={FetchData} />
<Route path='/' component={Logon} />
<Route path='/administrate' component={Administrate } />
</div>
;
我的组件“PrivateRoute”如下所示,登录后需要重定向到administrate组件:
export const PrivateRoute = ({ component: Component, ...rest }) => (
<Route {...rest} render={props => (
localStorage.getItem('user')
? <Redirect to={{ pathname: '/administrate', state: { from: props.location } }}/>
: <Redirect to={{ pathname: '/login', state: { from: props.location } }} />
)} />
)
有人能指出我正确的方向吗?我在俯瞰什么?万分感谢。
答案 0 :(得分:3)
将exact
添加到/
路由,否则/
和/administrate
将匹配。
答案 1 :(得分:3)
那是因为url匹配两个路径。
另外,我会用<Switch>
围绕它,强制它只显示其中一个。这很适合添加默认路径,否则默认路径将始终显示