React + Redux, как редиректнуть пользователя после успешного сетевого запроса?

Добрый день, делаю авторизацию и после получения токена с бэкэнда нужно перенаправить пользователя на его страницу?
createAction

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


        axios.post("http://127.0.0.1:8000/login/", {
            username: username,
            password: password
        })
            .then(function (res) {
                dispatch(loginSuccess(res.data.token));
                dispatch(push("/home"))
            })
            .catch(function (error) {
                if (error.response.status === 400) {
                    dispatch(loginError())
                }
            });
    }
};

store

import { createStore, applyMiddleware } from "redux";
import thunkMiddleware from "redux-thunk";
import { createLogger } from "redux-logger";
import rootReducer from "../Reducers/index";
 
const loggerMiddleware = createLogger();
 
export default function store() {
  return createStore(
    rootReducer,
    window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__(),
    applyMiddleware(
      thunkMiddleware,
      loggerMiddleware
    )
  )
}

React render
const history = createBrowserHistory();
const Store = store(history);


render(
	<Provider store={Store}>
        <div className="root_container">
            <ConnectedRouter history={history}>
                <Switch>
                    <Route exact path={"/"} component={Welcome} />
                    <Route exact path={"/login"} component={LoginContainer} />
                    <Route exact path={"/register"} component={RegisterContainer} />
                    <Route exact path={"/home"} component={AppContainer} />
                </Switch>
            </ConnectedRouter>
        </div>
    </Provider>,
    document.getElementById("root")
);

Видел вариант с dispatch.push("/home"), но только запускает action а не перенаправляет
  • Вопрос задан
  • 165 просмотров
Пригласить эксперта
Ответы на вопрос 2
miraage
@miraage
Старый прогер
Добавьте routerMiddleware(history) в applyMiddleware при создании store.
Ответ написан
Комментировать
RomReed
@RomReed
JavaScript, Flutter, ReactNative, Redux, Firebase
думаю что вот тут прекрасный ответ на ваш вопрос
https://stackoverflow.com/questions/45089386/what-...
еще можете попробовать вот этот пакет
https://www.npmjs.com/package/react-redirect
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы