reactjs组件都在显示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了reactjs组件都在显示相关的知识,希望对你有一定的参考价值。

登录后我只想要管理员组件,但我的登录组件仍然显示。

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 } }} />
    )} />
)

有人能指出我正确的方向吗?我在俯瞰什么?太感谢了。

答案

exact添加到你的/路线,否则//administrate将匹配。

https://github.com/ReactTraining/react-router/blob/master/packages/react-router/docs/api/Route.md#exact-bool

另一答案

那是因为url匹配两个路径。另外我会用<Switch>围绕它,迫使它只显示其中一个。这很适合添加默认路径,否则将始终显示默认路径

以上是关于reactjs组件都在显示的主要内容,如果未能解决你的问题,请参考以下文章

ReactJS 中的问题居中组件

ReactJS 中的路由。显示 URL 但未呈现组件

reactjs - 状态更改后组件不呈现[重复]

ReactJS 中的参数路由不显示 UI 组件

在 ReactJS 中显示/隐藏组件

ReactJS 组件中显示的视频未更新