Задать вопрос
  • Как правильно делать редирект?

    Flakelf
    @Flakelf Автор вопроса
    Решил следующий образом, в мой экшн authUser

    // client\src\redux\regAuth\actions.js
    
    import { history } from '../../index';
    
    export const authUser = userData => dispatch => {
        dispatch({ type: AUTH_REQUEST });
        console.log('Inside checkAuthData action');
        fetch('user/auth', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify(userData)
        })
        .then(res => res.json())
        .then(res => {
            if (!res.status) {
                return dispatch({
                    type: AUTH_FAILURE,
                    payload: res.message
                });
            }
            dispatch({
                type: AUTH_SUCCESS,
                payload: res.token
            });
            console.log(history);
            history.push('/personal');
            // localStorage.setItem('token', res.token);
        })
        .catch(err => console.log(err));
    }


    Импортировал history браузера из корневого файла

    // client\src\index.js
    
    import React from 'react';
    import ReactDOM from 'react-dom';
    import { Router } from "react-router-dom";
    import createBrowserHistory from 'history/createBrowserHistory';
    import { Provider } from 'react-redux';
    
    import App from './App.jsx';
    import store from './redux/store';
    
    export const history = createBrowserHistory();
    
    ReactDOM.render(
        <Router history={history}>
            <Provider store={store}>
                <App />
            </Provider>
        </Router>, 
        document.getElementById('root'));


    И после dispath вызвал метод push у объекта history, какой же я красавчик, будущее веб-разработки нашей необъятной, но тем не менее реквестирую у завсегдатаев варианты, как сделать лучше/оптимальней/красивей/изящней.
    Ответ написан
    Комментировать