Reactjs 您可以使用this.props.history.push将道具传递到路径名以外的其他组件吗?

Reactjs 您可以使用this.props.history.push将道具传递到路径名以外的其他组件吗?,reactjs,variables,react-router,react-props,react-component,Reactjs,Variables,React Router,React Props,React Component,我正在使用this.props.history.push在提交表单后将道具传递给组件 表单的提交将用户带到主页(/home),但它还需要将道具传递给NavBar组件,NavBar组件不包括在react路由器路由中 this.props.history.push({ pathname: '/home', propOne: propOneValue // <-- this prop must be received by NavBar component }) this

我正在使用this.props.history.push在提交表单后将道具传递给组件

表单的提交将用户带到主页(/home),但它还需要将道具传递给NavBar组件,NavBar组件不包括在react路由器路由中

 this.props.history.push({
    pathname: '/home',
    propOne: propOneValue // <-- this prop must be received by NavBar component 
 })
this.props.history.push({
路径名:'/home',
propOne:propOneValue//{
这个。道具。历史。推({
路径名:'/home',
})
返回
...
但是NavBar(基于类)组件中的
this.props.propOne
未定义。我认为这可能是因为NavBar已经在其他组件中呈现,而没有使用props


所以我的问题是-你能用this.props.history.push将道具传递到路径名路由一以外的其他组件吗?

在你刚刚编辑的第二个块中,一旦收到响应,它就会重定向到/home,因此不会调用return语句,因为它现在已登录到主页。这就是你得到道具一的原因未定义。若要在主页中使用,请将道具值指定给主页,并在主页呈现中,可以将所需道具值推送到导航栏。 使用这种方式传递道具值

this.props.history.push({
                pathname: "/home",
                state: {
                    propOne: propOneValue
                }
            });
并在主页中获取prop值:(如果主页是基于类的组件,则不要使用此选项)

然后在组件中使用
propValue

尝试
console.log(this.props.location)
并检查您得到的所有值,以便清晰地查看

主页:

render() {
      return (
             <Nav  propVal={this.state.propValue}  />
        )
    }
render(){
返回(
)
}

我实际上解决了这个问题

仅适用于有相同问题的人:如果您在道具方面有任何问题,只需使用cookie或localStorage移动变量即可


但是,如果有人知道如何使用道具解决这个问题,请随意分享答案

当使用历史来推送时,在推送函数的第二个参数中传递您想要的任何数据

this.props.history.push('/yourPath', {prop1: someData});
然后在另一个组件中访问此数据

const data = this.props.history.location.state;
// data will be {prop1: someData}

你的组件有道具吗?它是基于类的还是功能组件?你能把组件的片段放在调用someFunction的地方吗?它是从一个基于类的组件调用的,有一个合适的构造函数。你能给出组件的代码吗?好的,那么在这种情况下,我怎样才能把道具传递给组件呢at在react路由器中没有路由?您需要将您的propvalue从nav组件传输到历史记录。向右推?导航栏与所有文件App.js分开呈现,而不是Home.js。它需要留在那里,应用程序才能正常运行。App.js也没有路由
this.props.history.push('/yourPath', {prop1: someData});
const data = this.props.history.location.state;
// data will be {prop1: someData}