Описание ::
Я работаю над приложением ReactionJS и использую act-router-dom для маршрутизации. Если пользователь не авторизован, он переходит на «http://localhost:3000/login" и после успешного входа перенаправляется на« http://localhost:3000/dashboard".. После перезагрузки этой страницы отображается пустая страница.
Чтобы решить эту проблему, я добавил «/ app» после моего базового URL, и теперь он идет перед каждым URL-адресом маршрутизации. Теперь внутренняя страница маршрутизации выглядит как «http://localhost:3000/app/dashboard".
Но я не хочу добавлять «приложение» перед каждым элементом маршрутизации,
Мне нужен URL-адрес маршрутизации, base_url / путь маршрутизации страницы.
Маршрутизация пустой страницы ::
import React, { Component } from 'react';
import { BrowserRouter, Route, Switch, Redirect } from 'react-router-dom';
const InitialPath = ({ component: Component, authUser, ...rest }) => {
return (<Route
{...rest}
render={props =>
authUser
? <Component {...props} />
:
<Redirect
to={{
pathname: '/login',
state: { from: props.location }
}}
/>
}
/>
)
}
class App extends Component {
constructor(props) {
super(props);
}
render() {
let isUserLogggedIn = localStorage.getItem('isUserLoggedIn');
const { location, match } = this.props;
let url = location.pathname.split('/');
if (location.pathname === '/login') {
localStorage.clear();
}
if (location.pathname === '/') {
if (!isUserLogggedIn) {
return (<Redirect exact from='/' to={`${match.url}login`} />);
} else {
return (<Redirect exact from='/' to={`${match.url}app`} />);
}
}
if ((url[1] !== "app") && (url[1] !== "login")) {
return (<Redirect exact from={location.pathname} to={`${match.url}login`} />);
}
return (
<>
<BrowserRouter>
<Switch>
<InitialPath
path={`${match.url}app`}
authUser={isUserLogggedIn}
component={DefaultLayout}
location={location}
/>
<Route path='/login' component={Login} />
</Switch>
</BrowserRouter>
</>
);
}
}
export default App;
Если «приложение» удалено из корня, то его работа продолжается и появляется ошибка.
ERROR ::
Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.