Я создаю приложение реакции. Если пользователь вводит неправильный URL-адрес, отображается компонент NoMatch
(это нормально).
Задача заключается в том, что при вводе пользователем существующего URL-адреса отображаются два компонента. Появятся компонент NoMatch
и ожидаемый компонент.
Примечание. Я нашел несколько вопросов по этому поводу в stackoverflow , но ни одно из решений не помогло мне. Я использую <PrivateRoute>
и react-router-dom
.
Приложение. 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}
}}
/>
)
}
/>
);
Это проблема в том, что у меня есть.
Есть идеи, что я делаю неправильно, что я не получаю желаемый результат?