【发布时间】:2020-02-19 08:53:36
【问题描述】:
我正在构建 React 应用程序。
如果用户键入了错误的 URL,则会显示 NoMatch 组件(这很好)。
挑战是当用户键入现有 URL 时,会显示两个组件。 NoMatch 组件和预期组件都出现了。
注意:我在 stackoverflow 上发现了一些关于此的问题,但没有一个解决方案对我有用。我正在使用<PrivateRoute> 和react-router-dom。
App.js
<Provider store={store}>
<Router>
<Switch>
<Route exact path="/login" component={Login}/>
<Fragment>
<Navigationbar/>
<div className="main-part">
<Sidebar/>
<main className="content shrunk-sidebar">
<PrivateRoute path="/" exact component={Home}/>
<PrivateRoute path="/files" exact component={Files}/>
<PrivateRoute path="/new_app" exact component={NewApp}/>
<PrivateRoute path="/applications/:app_name" exact component={Application} />
<PrivateRoute path="*" component={NoMatch}/>
</main>
</div>
</Fragment>
</Switch>
</Router>
</Provider>
PrivateRoute.js
const PrivateRoute = ({component: Component, auth, ...rest}) => (
<Route
{...rest}
render={props =>
auth.isAuthenticated ? (
<Component {...props} />
) : (
<Redirect
to={{
pathname: "/login",
state: {from: props.location}
}}
/>
)
}
/>
);
知道我做错了什么,没有得到我想要的结果吗?
【问题讨论】: