reactjs - React 将一个对象传递给路由

标签 reactjs react-router-dom

我在“app.js”文件中设置了我的应用程序,我在渲染方法中定义了这样的路由器

        <HashRouter>
            <StatusToast />
            <Switch>
                <Route
                    exact={true}
                    path="/"
                    render={props => (
                        <ImageScene{...props} title="Images & Information Search" />
                    )}
                />
                <Route path="/case/:id/images" component={DetailsScene} />
            </Switch>
        </HashRouter>

来自 ImageScene在表行上单击,我调用如下方法: this.props.history.push(/case/${id}/images)

这会触发路由并加载DetailsScene我可以在哪里获得 id 的传递像这样this.props.match.params.id到目前为止一切正常,没有任何问题。

我的问题是如何传递一个字符串(id)以上的内容,我可以以某种方式将整个对象传递给路由吗?

我尝试对第二条路线执行类似的操作,而不是: <Route path="/case/:id/images" component={DetailsScene} />

设置ImageScene一种可以公开所选对象的方法,现在我们只做一个简单的方法,例如:

export function getSelectedRow() {
   return {
      title: 'test'
   }
}

然后设置如下路线:

const object = getSelectedRow();

<Route path="/case/:id/images" 
       render={props => (<DetailsScene{...props} title={object.title} />
       )} 
/>

但我无法让它工作......任何帮助都会很高兴,我对 react 和整个路由器完全陌生。

最佳答案

您可以将状态添加到history.push (https://reacttraining.com/react-router/web/api/history),该状态可用于正在渲染的组件(DetailsS​​cene)。请记住用Router(...) 包装DetailsS​​cene,以便在其属性中提供history.location.state。

关于reactjs - React 将一个对象传递给路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57400871/

相关文章:

reactjs - 如何跟踪用户喜欢哪些帖子?

javascript - 为什么现代 JavaScript 框架不鼓励与 DOM 直接交互

reactjs - 何时在 React 应用程序中的组件和页面之间使用导航与 'State based switching'?

reactjs - 索引路由旁边的 React router v4 通配符

javascript - 如何正确使用 react-router-dom 中的 useHistory()?

javascript - 使用 if else 条件在 React jsx 渲染函数内循环

javascript - 从内屏幕返回到父屏幕

reactjs - material-ui v1中Input元素的事件类型是什么?

javascript - BrowserRouter 导致无效的钩子(Hook)调用。 Hooks 只能在函数组件的主体内部调用

reactjs - Django/React - 生产 API URL 路由问题