当前位置: 首页 > 知识库问答 >
问题:

使用历史对象在反应路由器中传递道具

萧晔
2023-03-14
import createBrowserHistory from 'history/
import appState from './AppState'

const customHistory = createBrowserHistory()
ReactDOM.render(
  <Router>
    <div>
      <Route path="/submit" component={Submit} history={history}/>
    </div>
  </Router>,
  document.getElementById('root')
);

注意:如果我像其他属性一样添加appState;提交组件中没有appState之类的属性,

如果我用这个;

<Route path="/submit" render={routeProps=> <Submit appState={appState}/> history={history}/>

appState传递很好,但这次缺少历史对象,正确的方法是什么?appState只是mobx类实例。

编辑:我找到了一个“奇怪”的解决方案。我将route元素更改为此;

 <Route path="/submit" render={routeProps=> <Submit appState={appState}/> history={history}/>

然后,我可以通过this.\u reactInternalInstance.\u context.router.history.push('/home')访问相同的历史对象在进行此更改之前,我可以将其用作this.props.history.push('/home')

如果我让它工作正常,但是用这种方式获取这个历史对象很烦人

共有2个答案

东门清夷
2023-03-14

我敢肯定你做错了。浏览器历史记录是一个单例对象,所以您可以从模块中导出它。看这里:

//history.js:
import createBrowserHistory from 'history/
export default createBrowserHistory();

//Submit.js
import history from "myapp/history"
export default class Submit extends React.Component {
   ...
}

//MyRouter.js
import Submit from './myapp/Submit'
import appState from './AppState'
ReactDOM.render(
  <Router>
    <div>
      <Route path="/submit" component={Submit}/>
    </div>
  </Router>,
  document.getElementById('root')
);
鲍建业
2023-03-14

我认为这是对的,你最好把历史放在路由器而不是路线上。

请看下面的回答,这个对我很有效。您仍然可以在这个答案中使用history.push。有时history.push没有重定向页面,如果这种情况发生在你身上,你可以把location.href=location.href刷新页面。

https://stackoverflow.com/a/42679052/7765396

 类似资料:
  • 我需要通过使用路由器的组件道具。这是我的代码: 如您所见,我验证了我要传递给登录组件的道具。 当我记录道具时,未经验证的道具不存在。我做错了什么?我怎样才能正确地通过道具?我跟踪了文档和其他讨论。据我所知,这应该是可行的。react router和react router dom的版本为4.0.0

  • 我正在使用react with react路由器。我正试图在react路由器的“链接”中传递属性 “链接”呈现页面,但不将属性传递给新视图。下面是查看代码 如何使用“链接”传递数据?

  • 我正在获取中的产品列表,在其中,我需要将选定的产品对象传递给。 目前,我正在尝试将作为路由参数传递,并再次获取产品对象。但是我想将整个产品对象从发送到。 我的路线是 产品列表组件链接 如何将产品对象作为道具传递给? 下面的代码在Typescript中抛出错误,表示

  • 我在Angular2中有一个组件托管用户表(userTableComponnent)和另一个userDetails组件。单击用户表中的行后,我想路由到用户详细信息。一种实现是仅传递 userId,因此在 userDetails 中,我使用另一个 http get 获取用户的详细信息。但是,这是多余的,因为我在userTableComponent中获取了所有用户信息。因此,我真正需要的是将 User

  • 我试图使用react router将props从app.jsx传递到某个路由组件,但出现以下错误

  • 问题内容: 我正在从本教程中学习,但始终收到此错误: “ react-router”不包含名为“ browserHistory”的导出。 具有react-router的文件是这样的: 问题答案: 您现在需要从历史记录模块中获取。 请注意,他们最近更改了模块API,因此,如果您使用的是最新版本,则导入会稍有变化: