Перенаправление в обещании для React JS - PullRequest
0 голосов
/ 08 ноября 2019

Я хочу перенаправить на обещание, когда оно в 'тогда'. Но это также не работает с history.push() и Redirect. Есть ли другой способ сделать это?

Вот функция:

let submit = (e: any) => {
        e.preventDefault();

        if (userData.password === confirmPassword) {
            userService.postRegister(userData)
                .then(function (data) {
                    store.addNotification({
                        title: "Succès",
                        message: "Votre inscription a été prise en compte",
                        insert:'top',
                        type: 'success',
                        container: 'top-right',
                        animationIn: ["animated", "fadeIn"],
                        animationOut: ["animated", "fadeOut"],
                        dismiss: {
                            duration: 5000,
                        }

                    })
                    console.log("test");
                    history.push("/signin");
                })
                .catch(function (err) {
                    store.addNotification({
                        title: "Erreur",
                        message: "L'inscription n'a pas pu aboutir",
                        insert:'top',
                        type: 'danger',
                        container: 'top-right',
                        animationIn: ["animated", "fadeIn"],
                        animationOut: ["animated", "fadeOut"],
                        dismiss: {
                            duration: 5000,
                        }
                    })
                });

Ответы [ 3 ]

0 голосов
/ 08 ноября 2019

@ tareq

Это меняет маршрут на "http://localhost:3000/signup#/signin", но остается на рассматриваемой странице.

Это дороги, о которых идет речь: Функция визуализации App.tsx

render() {
        return (
            <div>
                <div className="App">
                    <Header/>>
                </div>

                <div className="App-intro">
                    <Switch>
                        <Route path="/signin" component={{Signin}/>>
                        <Route path="/signup" component={{Signup}/>>
                        <this.PrivateRoute path="/dashboard" component={Dashboard}/>
                        <Route path="/admin/dashboard" component={AdminDashboard}/>
                        <Redirect to="/signin"/>
                    </Switch>
                    <div className="app-container">
                        <ReactNotification/>
                    </div>
                </div>
                <div className="App-footer">
                    <Football/>>
                </div>
            </div>
        );
}
0 голосов
/ 08 ноября 2019

Я проверил ваш полный код, и он действительно неверен.

Пожалуйста, создайте файл "useRouter.js"

import {useContext} from 'react'
import {__RouterContext} from 'react-router'

export default () => useContext(__RouterContext);

В вашем файле formsignup сначала удалите все, что связано с историей.

и вставить следующий

import useRouter from 'path to useRouter.js'

...

function SignUpForm(props: any) {
...
const router = useRouter()

...
router.history.push('/signin'); // write this where you want to push
}
0 голосов
/ 08 ноября 2019

Вы можете попробовать

let submit = async (e: any) => {
        e.preventDefault();
        ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...