Реактивный маршрутизатор не работает должным образом при передаче состояния в history.push - PullRequest
0 голосов
/ 23 января 2020

У меня есть какая-то форма, где я получаю информацию о резервировании пользователя, а затем при отправке я перенаправляю пользователя на другую страницу по history.pu sh ('/ somepath'), но когда я передаю реквизиты по history.pu sh ({ pathname: '', state: {}}) затем мой URL меняется, но мой компонент не отображается, это первый раз, когда я сталкиваюсь с этой проблемой, и теперь у меня болит голова, я не знаю, где проблема или почему это происходит. У меня есть другая форма, которая отлично работает, когда я использую там history.pu sh ({pathname: '', state: {}}).

Приложение. js

import React from 'react';
import { connect } from 'react-redux';
import { BrowserRouter, Switch, Route, Redirect } from 'react-router-dom';
import Navbar from './components/Navbar/Navbar';
import Home from './pages/Home/Home';
import Login from './pages/Login/Login';
import Signup from './pages/Signup/Signup';
import Vehicles from './pages/Vehicles/Vehicles';
import About from './pages/About/About';
import VehiclesListView from './pages/Vehicles/VehiclesListView';
import Checkout from './pages/Checkout/Checkout';

function App({ user }) {
    const [ isAuth, setAuth ] = React.useState(false);

    return (
        <BrowserRouter basename="/">
            <Navbar isAuth={isAuth} setAuth={(v) => setAuth(v)} />
            <Switch>
                <Route exact path="/" component={Home} />
                <Route path="/vehicles" component={Vehicles} />
                <Route exact path="/reserve/checkout" component={Checkout} />
                <Route exact path="/reserve" component={VehiclesListView} />
                <Route path="/about" component={About} />

                {!user && (
                    <Switch>
                        <Route path="/login" render={() => <Login setAuth={(v) => setAuth(v)} />} />
                        <Route path="/signup" component={Signup} />
                    </Switch>
                )}
                <Redirect to="/" />
            </Switch>
        </BrowserRouter>
    );
}

const mapStateToProps = (state) => ({
    user: state.user.currentUser
});

export default connect(mapStateToProps)(App);

Форма. js

const submit = (e) => {
    e.preventDefault();
    history.push({
        pathname: `/reserve?type=${type}&zipcode=${pickup.zip}`,
        state: {
            type,
            pickup,
            dropOff,
            pickupTime,
            dropTime
        }
    });
};

1 Ответ

1 голос
/ 23 января 2020

Я думаю, что это должно сработать для вас.

history.push(`/reserve?type=${type}&zipcode=${pickup.zip}`, 
      state: {
            type,
            pickup,
            dropOff,
            pickupTime,
            dropTime
     }
);
...