Reactjs React-在React路由器中传递数据

Reactjs React-在React路由器中传递数据,reactjs,react-hooks,components,react-router-dom,react-props,Reactjs,React Hooks,Components,React Router Dom,React Props,所以,我很难在两个不相关的组件之间传递数据。我有下面的代码,但我不知道如何从其他组件接收它 <Button className='search__button' variant="contained" color="primary" size="large" component={Link} to={{ pathname: "/home", state:

所以,我很难在两个不相关的组件之间传递数据。我有下面的代码,但我不知道如何从其他组件接收它

<Button
   className='search__button'
   variant="contained"
   color="primary"
   size="large"
   component={Link}
   to={{
     pathname: "/home",
     state: { data: results }
   }}
>

我想将变量“results”传递给组件,它是字符串和对象簿(Map)的映射。基本上,我的问题是,如何在我的主组件中检索数据


谢谢

当发送带有路由转换的状态时,您可以通过几种不同的方式在接收路由的
位置
对象上访问该状态:

  • 对于功能组件,可以使用挂钩

  • 如果组件是由
    渲染
    上的
    路由
    渲染的,
    组件
    子组件
    道具将传递给组件<代码>位置将成为道具。或者,您可以使用最匹配的
    路线的路线道具作为道具传递,来装饰组件

     const { location: { state } } = this.props;
     // access state.data
    


  • 将其存储在全局状态。你可以通过一个钩子从一个位置获得想法,你也可以在auth示例中看到这个例子,谢谢。我收到数据,但不是第一次尝试。当我第二次按下按钮时,也就是我收到数据的时候,哪里有延迟?@PatrickYoussef单击此按钮是否也会触发一些异步回调,即它是否会触发一些数据获取或类似操作?否,首先,我初始化“let results:Filters={}”(Filters是我创建的一个接口)。然后单击按钮调用一个函数,该函数更改变量“results”。然后正如你所看到的,我有一个按钮,可以将“结果”发送到/home
     const { location: { state } } = this.props;
     // access state.data
    
     const { location: { state } } = props;
     // access state.data