用代码导航进行反应

看这个视频反应路由器似乎很容易使用,但我找不到如何导航我的代码,因为我想点击一个div链接,而不是使用<Link>

我搜索了StackOverflow,但没有找到任何与4.0一起工作的答案。 尝试导入browserHistory会导致未定义(在'react-router-dom'之外安装'react-router'之前和之后):

import { browserHistory } from 'react-router';
console.log('browserHistory:', browserHistory);

我也看到了某个地方,你可以得到一个'背景',但是这显示了'匹配'而不是'背景'的价值:

<Route path="/" render={({ match, context}) => {
    console.log('match:', match);
    console.log('context:', context);

编辑

在开发工具中,我可以看到“路由器”具有历史记录属性,所以当我添加了我可以实现的功能时:

<Route path="/" render={({ match, context, history}) => {

有没有办法从路线外面得到这个? 例如导航到其他组件但不在路由本身内的导航栏组件...


如果我理解你的问题,这是你如何进行链接programaticaly。

    class Test extends React.Component {

      handleClick() {
        console.log(this.context);
        this.context.router.history.push('/some/path');
      },

      render() {

        return (
          <div onClick={handleClick}>
            This is div.
          </div>
        )
      }
    }

    Test.contextTypes = {
      router: React.PropTypes.object.isRequired
    }

    ReactDOM.render(
      <Test />,
      document.getElementById("app")
    );

必须更多地阅读文档。 history对象仅作为使用Route上的component (或其他)属性的属性传递。 显然需要包含'history'包并使用createBrowserHistory并将其传递给Router ,然后在Route指定组件。 我认为这应该工作正常,因为exact没有指定...

import { createBrowserHistory } from 'history';
const history = createBrowserHistory();
ReactDOM.render( (
    <Router history={ history }>
      <Route path="/" component={ App } />
    </Router>
  ),
  document.getElementById('root')
);

<Router> <App/>内部有<App/>之前,无法访问这些属性。


你为什么不把自己的div封装在链接中,而不是试图规避它,让你的生活更轻松?

    <Link to="/" >
       <div className="to-component">go to component</div>
    </Link>
链接地址: http://www.djcxy.com/p/52137.html

上一篇: Navigate in code with react

下一篇: How to push to History in React Router v4?