如何修复ReactRouter错误" Uncaught Invariant Violation:元素类型无效"?

时间:2016-11-20 20:29:57

标签: reactjs react-router single-page-application

我在ReactRouter上尝试了这个教程:https://www.kirupa.com/react/creating_single_page_app_react_using_react_router.htm

演示页面和完整的源代码在这里(JS在HTML文件中):https://www.kirupa.com/react/examples/react_router_final.htm

当我尝试实现类似的东西时,我得到错误:

Uncaught Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object. Check the render method of `ComponentRoot`.

我注意到,当我在Kirupa的演示应用程序中更改了React和Babel版本(上面链接中的完整源代码)时,请:

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.4.0/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.4.0/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-router/4.0.0-0/react-router.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.19.0/babel.min.js"></script>

我在这个演示应用中遇到了同样的错误。所以React或Babel版本的更改导致了这个问题。

如何修复此演示应用以使用新版本的React和Babel?

1 个答案:

答案 0 :(得分:0)

本教程似乎涵盖了react-router@2.x.x,您使用react-router@4.x.x完全重写了不同的方法和API。

使用v2与教程中描述的API匹配或使用v4文档(https://react-router.now.sh/)。 请注意,v4仍处于alpha状态。