返回介绍

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

发布于 2024-09-16 12:15:18 字数 1324 浏览 0 评论 0 收藏 0

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

使用 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>
))

使用 <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>
  )} />
)

使用上下文:

建议不要使用此选项,并将其视为不稳定的 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 和您的相关数据。
    原文