Если я заблокирован на странице обновления abd, я перенаправлю на главную страницу

#javascript #reactjs #react-router

#javascript #reactjs #реагировать-маршрутизатор

Вопрос:

Я регистрирую пользователя перед отображением страницы, но если пользователь заблокирован и обновляет страницу, он перенаправит на главную страницу.

Это мое первое перенаправление:

 useEffect(() => {

    dispatch({type: USER_LOGIN})

}, [])

<PrivateRoute path={'/profile/:slug'} redirect={'/'} loggedIn={isLogged} component={Profile} />
 
 const PrivateRoute = ({ component: Comp, loggedIn, redirect, path, ...rest }) => {

    return (
        <Route
            path={path}
            {...rest}
            render={props => {
                return loggedIn ? <Comp {...props} /> : <Redirect to={redirect} />
            }}
        />
    )
}
 

И вторая попытка:

 <Route path={'/profile/:slug'}>
       {
          isLogged ? <Route path={'/profile/:slug'} component={Profile} /> : <Redirect to={'/'} />
       }
</Route>
 

Но все мои попытки были ошибочными, и если я обновлю страницу повторно, я был перенаправлен на главную страницу

Комментарии:

1. Вероятно, у вас должно быть состояние «загрузка», чтобы условно отображать что-то другое , кроме вашего аутентифицированного компонента маршрута или перенаправления. Т.Е. дождитесь завершения проверки подлинности, прежде чем предпринимать какие-либо действия тем или иным способом.

Ответ №1:

Просто добавьте на странице профиля этот код на странице профиля

 
useEffect(() => {

       window.axios.post(`auth/user`)

            .then(res => {

                dispatch({type: USER_LOGIN, payload: res.data.data})

            })

            .catch(() => {

                history.push(`/`)

            })

    }, [])