Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将状态传递到history.push时,反应路由器未按预期工作_Javascript_Reactjs_React Router V4 - Fatal编程技术网

Javascript 将状态传递到history.push时,反应路由器未按预期工作

Javascript 将状态传递到history.push时,反应路由器未按预期工作,javascript,reactjs,react-router-v4,Javascript,Reactjs,React Router V4,我有一些表单,在那里我获取用户保留详细信息,然后在提交时我通过历史将用户重定向到其他页面。push('/somepath')但当我通过历史传递道具时。push({pathname:'',state:{}})然后我的url更改但我的组件没有呈现,这是我第一次面临这个问题,现在我的头很痛,我不知道问题在哪里,也不知道为什么会发生这种情况。我有另一个表单,当我使用history.push({pathname:'',state:{})时可以正常工作 App.js import React from 'r

我有一些表单,在那里我获取用户保留详细信息,然后在提交时我通过历史将用户重定向到其他页面。push('/somepath')但当我通过历史传递道具时。push({pathname:'',state:{}})然后我的url更改但我的组件没有呈现,这是我第一次面临这个问题,现在我的头很痛,我不知道问题在哪里,也不知道为什么会发生这种情况。我有另一个表单,当我使用history.push({pathname:'',state:{})时可以正常工作

App.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);

我想这应该对你有用

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

只是想知道form.js在哪里,我是说在哪个父组件中?是的,它工作了,非常感谢,但您能解释一下为什么工作吗?您将对象传递给push。虽然push接受两个参数,第一个是作为字符串的路径,第二个是作为状态的对象。但我在问题中提到的语法在我的另一个onClick处理程序中运行良好
history.push(`/reserve?type=${type}&zipcode=${pickup.zip}`, 
      state: {
            type,
            pickup,
            dropOff,
            pickupTime,
            dropTime
     }
);