Функция вызывается несколько раз в компоненте коммутатора React Router - PullRequest
0 голосов
/ 12 сентября 2018

Я делаю веб-страницу с защищенной маршрутизацией. Только моя страница входа в систему является общедоступной, а все остальные страницы являются закрытыми, поэтому, когда кто-то посещает другой URL-адрес, он проверяет, есть ли у пользователя действительный токен и т. Д. Проблема в том, что даже когда я захожу на страницу входа в систему, функция verifytoken по-прежнему вызывается, хотя у меня нет доступа к частному URL.

Итак, текущая ситуация: (без действительного логина)

  • Я захожу на localhost: 3000, я вижу свою публичную страницу входа. В консоли я вижу, что моя функция verifytoken вызывается.
  • Я захожу на локальный хост: 3000 / клиентов, я вижу свою публичную страницу входа. в консоли я вижу, что мой verifytoken вызван дважды

ожидаемая ситуация:

  • я перехожу на localhost: 3000, я вижу свою публичную страницу, но функция verifytoken не вызывается
  • Я захожу на локальный хост: 3000 / клиентов, я вижу свою общедоступную страницу, и проверочный ток вызывается один раз

Кроме того, всякий раз, когда я добавляю больше защищенных маршрутизованных в коммутаторе, всякий раз, когда я иду на 1 защищенный маршрут, он выполняет функцию для каждого защищенного маршрута в этом операторе коммутатора

Это нормальное и приемлемое поведение? Потому что я не могу найти много информации об этом, и я думал, что оператор switch был решением для этого.

код:

    //Protected route only for authenticated users
const ProtectedRoute = ({ isAllowed, ...props }) => (isAllowed ? <Route {...props} /> : <Redirect to="/login" />)

export default class Router extends Component {
    render() {
        return (
            <Switch>
                {/*Does / route need to be protected? pro's, cons?*/}
                <Route exact path="/" component={Login} />
                <Route exact path="/login" component={Login} />
                <Route path="/404" component={NotFound} />
                <ProtectedRoute isAllowed={isTokenVerified()} exact path="/clients" component={ClientOverview} />

                <Redirect from="*" to="/404" />
            </Switch>
        )
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...