返回介绍

如何使用在 React Router v4 中以编程的方式进行导航?

发布于 2024-08-09 20:39:58 字数 1486 浏览 0 评论 0 收藏 0

在组件中实现操作路由/导航有三种不同的方法。

  1. 使用 withRouter() 高阶函数:

    withRouter() 高阶函数将注入 history 对象作为组件的 prop。该对象提供了 push()replace() 方法,以避免使用上下文。

    import { withRouter } from 'react-router-dom' // this also works with 'react-router-native'
    
    const Button = withRouter(({ history }) => (
      <button
        type='button'
        onClick={() => { history.push('/new-location') } }
      >
        {'Click Me!'}
      </button>
    ))
    
  2. 使用 <Route> 组件和渲染属性模式:

    <Route> 组件传递与 withRouter() 相同的属性,因此您将能够通过 history 属性访问到操作历史记录的方法。

    import { Route } from 'react-router-dom'
    
    const Button = () => (
      <Route render={({ history }) => (
        <button
          type='button'
          onClick={() => { history.push('/new-location') } }
        >
          {'Click Me!'}
        </button>
      )} />
    )
    
  3. 使用上下文:

    建议不要使用此选项,并将其视为不稳定的 API。

    const Button = (props, context) => (
      <button
        type='button'
        onClick={() => {
          context.history.push('/new-location')
        } }
      >
        {'Click Me!'}
      </button>
    )
    
    Button.contextTypes = {
      history: React.PropTypes.shape({
        push: React.PropTypes.func.isRequired
      })
    }
    

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文