Обновление магазина перед пользовательским маршрутом - PullRequest
0 голосов
/ 25 августа 2018

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

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

class PrivateRoute extends React.Component{
    render() {
        const { isAuthenticated, component: Component, ...rest } = this.props;

        return (
            <Route {...rest} component={(props) => {
                if(isAuthenticated){
                    return <Component {...props}/>
                }
                else{
                    return <Redirect to="/login" />
                }
            }}/>
        )
    }
}

const mapStateToProps = (state) => {
    return{
        isAuthenticated: state.auth.email !== '' ? true : false
    }
}

const ConnectedPrivateRoute = connect(mapStateToProps)(PrivateRoute)
export default ConnectedPrivateRoute;

Я перенаправляю себя на маршрут панели мониторинга от узла serer после входа в систему.

import React from 'react';
import axios from 'axios';
import {connect} from 'react-redux';
import { setAuthenticatedUser } from '../actions/authA';

class Dashboard extends React.Component{
  constructor(props) {
    super(props);
    axios.get('/cookie').then((user) => {
      if(user.data.email)
        this.props.dispatch(setAuthenticatedUser(user.data));
    })
    .catch((e) => {
      console.log("Got some error");
    })
  }
  render() {
    return (
      <div>Dashboard Page</div>
    );
  }
}

export default connect()(Dashboard);

В настоящее время моя панель поиска ищет файлы cookie для проверки подлинности и обновляет мой магазин.Но после добавления custom route происходит перенаправление на login page, потому что мой пользовательский маршрут не находит обновленный store, так как он обновляется в приборной панели.Я застрял здесь.Я попытался обновить мой собственный маршрут, но я добавил больше путаницы к себе.Любое предложение и решение приветствуется.

Спасибо

1 Ответ

0 голосов
/ 25 августа 2018

Если вы опубликуете ваш Login компонент, я мог бы лучше ответить на вопрос.

Сказав это, компонент панели управления не несет ответственности за setAuthenticatedUser, поскольку, если они в состоянииперейдите к панели инструментов, это означает, что они уже аутентифицированы.

После того, как пользователь войдет в систему, вы должны позвонить setAuthenticatedUser, а затем перенаправить на панель управления, чтобы ваш компонент PrivateRoute не вызывал ненужного перенаправления.

...