javascript - 当我使用 PrivateRoute 时,当我重新加载页面时,我总是会转到登录页面一次

标签 javascript reactjs

目前,我使用以下PrivateRoute来确定用户是否已登录,如果是,则将用户带到指定页面,如果没有,则将用户带到登录页面。但是,当我重新加载页面时,它会立即转换到登录页面,然后转换到根页面,并且我无法再次显示/accounts 或/notes 页面。

直接在地址栏中键入内容时也会出现这种现象。

如果您对此有更多了解,请告诉我为什么会出现这种下降,我将不胜感激。

enter image description here

import React from 'react'
import { Route, Redirect } from 'react-router-dom'
import { connect } from 'react-redux'

const PrivateRoute = ({ component: Component, auth, ...rest }) => (
    <Route
        {...rest}
        render={props => {
            if (auth.isLoading) {
                return <h2>Loading...</h2>;
            } else if (auth.isAuthenticated) {
                return <Component {...props} />;
            } else {
                return <Redirect to='/login' />;
            }
        }}
    />
);

const mapStateToProps = state => ({
    auth: state.auth
})

export default connect(mapStateToProps)(PrivateRoute);

行动

export const login = (username, password) => dispatch => {

    const config = {
        headers: {
            'Content-Type': 'application/json',
        }
    };

    const body = JSON.stringify({ username, password });

    axios
        .post(`${url}/api/auth/login`, body, config)
        .then((res) => {
            dispatch({
                type: LOGIN_SUCCESS,
                payload: res.data,
            });
        })
        .catch((err) => {
            dispatch(returnErrors(err.response.data, err.response.status));
            dispatch({
                type: LOGIN_FAIL,
            });
        });
};

最佳答案

问题是每次页面重新加载时,redux 中的身份验证状态都会丢失,因此您无法再识别身份验证。为了防止您可以将状态保存在 localStorage 中或使用 redux-persist为了它。

关于javascript - 当我使用 PrivateRoute 时,当我重新加载页面时,我总是会转到登录页面一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66849114/

相关文章:

javascript - TypeError this.props.addNode 不是函数

javascript - 未捕获的不变违规 : Minified React error

javascript - React - 当按下 'Enter' 键时调用特定函数

javascript - 过滤基于数组的属性值

javascript - 仅在 iPhone 上拖动网站上的元素时的 WinXP 风格的拖动故障效果

javascript - react : conditional statement in render function

javascript - 推送到数组中 undefined index

javascript - 在 angularjs 工厂方法中添加事件监听器未按预期工作

javascript - ReactJS firebase auth displayName 返回 null

javascript - 在react-dropzone-uploader的onSubmit方法中访问props