【发布时间】:2020-08-24 01:14:23
【问题描述】:
我有一个带有身份验证和私有路由的简单应用程序,如果用户有令牌,我想从服务器获取数据,后端准备好并且工作正常,我登录我在 redux 中有关于用户的数据,但我不知道如何处理刷新页面,我应该在哪里调度调用操作?如果我在 privateRoute.js 中这样做,它会很奇怪我想调用服务器的,但我做了 3-4 次。
这是我的组件,没有调用 sessionActions,sessionActions 应该更新 loggedIn 并且用户会转到 /login 页面
PrivateRoute
import React, { useState, useEffect } from 'react';
import { Route, Redirect } from 'react-router-dom';
import PropTypes from 'prop-types';
import sessionAction from '../store/actions/sessionAction';
const PrivateRoute = ({ component: Component, ...rest }) => {
const { path, dispatch, loggedIn } = rest;
});
return (
<Route
path={path}
render={(props) => (loggedIn ? <Component {...props} />
<Component {...props}/>
: (<Redirect to="/login" />))}
/>
);
};
PrivateRoute.propTypes = {
component: PropTypes.func.isRequired,
};
export default PrivateRoute;
sessionAction
const sessionAction = (path) => (dispatch) => {
return sessionServices(path)
.then((response) => {
console.log(response);
const { data } = response;
if (!data.error) {
dispatch(success(data));
}
dispatch(failure(data.error.text));
})
.catch((error) => error);
};
sessionService
import axios from 'axios';
axios.defaults.withCredentials = true;
const sessionServices = (path) => axios({
method: 'post',
url: `http://localhost:4000/api/pages${path}`,
})
.then((response) => response)
.catch((error) => console.log(error));
export default sessionServices;
【问题讨论】:
标签: reactjs redux react-router express-session