试图更新路由器4.0.0反应,但有问题

时间:2017-07-01 15:54:49

标签: javascript reactjs react-router

我收到此错误消息:index.js:920 Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in. Check the render method of Header.

我在渲染方法中有这个:

return (
      <Router>
        <div>
          <Route strict path="/" component={Header} />
        </div>
      </Router>
    );

在标题中我有

export default class Header扩展了React.Component {

  render() {
    return (
      <div className="container">
        <ul>
          <div className="links">
            <li><Link to="quizzes">Quizzes</Link></li>
          </div>
          <div className="links">
            <li><Link to="categories">Categories</Link></li>
          </div>
          <div className="links">
            <li><Link to="create">Create</Link></li>
          </div>
        </ul>
      </div>
    );
  }
}

所以它似乎在说我没有出口它,但显然我有。任何想法?

2 个答案:

答案 0 :(得分:1)

消息是说“检查标题的渲染方法” 所以错误在Header组件中。

我的猜测是您从Link导入了react-router组件 从react-router v4开始,react-router分为三个包 现在Link组件位于react-router-dom包中 因此,您需要安装react-router-dom并将import语句更改为:

import {Link} from 'react-router-dom'

答案 1 :(得分:0)

您导入的链接组件来自'react-router'这是问题所在,这适用于react-router版本&lt; 4.0。从react-router version4开始,这个Link包是react-router-dom的一部分。所以你需要先安装react-router-dom:

npm install --save react-router-dom

像这样导入:

import { Link } from 'react-router-dom'