【问题标题】:react router v4 error Link component反应路由器v4错误链接组件
【发布时间】:2017-12-15 06:39:03
【问题描述】:

我有从 react-router-dom 导入链接的组件

import React, { Component } from 'react';
import { Link } from 'react-router-dom';


class Sidebar extends Component{

  render() {
    return (
      <div className="be-left-sidebar">
        <div className="left-sidebar-wrapper"><a href="#" className="left-sidebar-toggle">Blank Page</a>
          <div className="left-sidebar-spacer">
            <div className="left-sidebar-scroll">
              <div className="left-sidebar-content">
                <ul className="sidebar-elements">
                  <li className="divider">Menu</li>
                  <li className="parent"><a href="#"><i className="icon mdi mdi-home" /><span>Home</span></a>
                    <ul className="sub-menu">
                      <li><Link to='/'>Home</Link>
                      </li>

                    </ul>
                  </li>
                </ul>
              </div>
            </div>
          </div>
          <div className="progress-widget">
            <div className="progress-data"><span className="progress-value">60%</span><span className="name">Current Project</span></div>
            <div className="progress">
              <div style={{width: '60%'}} className="progress-bar progress-bar-primary" />
            </div>
          </div>
        </div>
      </div>
    );
  }

};

export default Sidebar;

然后console.log显示错误

  • Warning: Failed context type: The context router is marked as required in Link, but its value is undefined.
  • Cannot read property 'history' of undefined

`

我是 react 新手,我正在使用 react router v4.1.1

有人可以帮助我吗? 谢谢

【问题讨论】:

  • 需要看看我认为的路由器。
  • 您确定您的组件出现在&lt;Router&gt; 组件中吗?你的 react-router-dom 的确切版本是什么?
  • 已解决,谢谢,我不知道 react-router-dom 组件必须由 Router @philippsh 包装

标签: javascript reactjs react-router


【解决方案1】:

确保您的组件出现在&lt;Router&gt; 组件中。

【讨论】:

    【解决方案2】:

    在 React 路由器 v4 中,我们有从 react-router-dom 导入的 Switch、Route 和 Link 组件,并按如下方式配置我们的路由器:

    import { Switch, Route, Link } from 'react-router-dom';
    
      <span>LINKS:</span>
      <ul>
        <li onClick={this.props.goToDefault}><Link to={'/'}>Go To Default</Link></li>
        <li onClick={this.props.goToSub1}><Link to={'/left-sub1'}>Go To One</Link></li>
        <li onClick={this.props.goToSub2}><Link to={'/left-sub2'}>Go To Two</Link></li>
      </ul>
      <Switch>
        <Route exact path='/' component={LeftSubDefault} />
        <Route path='/left-sub1' component={LeftSubOne} />
        <Route path='/left-sub2' component={LeftSubTwo} />
      </Switch>
    

    在 app.js 或任何你的入口文件中。将您的 App 组件包装在 BrowserRouter 中,如下所示:

    import { BrowserRouter } from 'react-router-dom';
    
    <BrowserRouter>
        <App />
    </BrowserRouter>
    

    Here 是一篇精彩的文章,可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-02-16
      • 2019-02-09
      • 2019-02-04
      • 2017-12-06
      • 2018-01-04
      • 2017-09-16
      • 2017-11-09
      • 1970-01-01
      • 2017-10-21
      相关资源
      最近更新 更多