Uncaught Error: Invariant Violation: Element type is invalid: Object
Uncaught Error: Invariant Violation: Element type is invalid: Object
我正在修改 react-router
,试图实现简单的路由。我按照他们示例中的代码输入代码(但没有 import
s)https://github.com/rackt/react-router#whats-it-look-like.
我在浏览器中收到此错误:
Uncaught Error: Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.
这就是我所做的。
我在页面上附加了脚本,ReactRouter.min.js
和我的代码在 react-routes.js
中。还有 react
和 react-dom
和 jquery(app.js
中的所有三个):
<script src="/js/app.js" type="text/javascript" charset="utf-8"></script>
<script src="https://npmcdn.com/react-router/umd/ReactRouter.min.js"></script>
<script src="/js/react-routes.js" type="text/javascript" charset="utf-8"></script>
这是我的react-router.js
,还没有编译:
'use strict';
window.Router = window.ReactRouter;
window.Link = window.ReactRouter.Link;
window.Route = window.ReactRouter.Route;
const Foo = React.createClass({
render() {
return (
<div>
<h1>HELLO, me FOO</h1>
</div>
)
}
});
ReactDOM.render((
<Router>
<Route path="/" >
<Route path="/page/one" component={Foo}/>
</Route>
</Router>
), document.getElementById('content-section'))
这是我用 Babel 编译后的 react-router.js
。我在页面上附上了这个:
babel --presets react -o public/js/react-routes.js assets/js/react-routes.js
:
'use strict';
window.Router = window.ReactRouter;
window.Link = window.ReactRouter.Link;
window.Route = window.ReactRouter.Route;
const Foo = React.createClass({
displayName: "Foo",
render() {
return React.createElement(
"div",
null,
React.createElement(
"h1",
null,
"HELLO, me FOO"
)
);
}
});
// Error is thrown here, in this line
ReactDOM.render(React.createElement(
Router,
null,
React.createElement(
Route,
{ path: "/" },
React.createElement(Route, { path: "/page/one", component: Foo })
)
), document.getElementById('content-section'));
我做错了什么?为什么抛出错误?路由器是一个对象,而不是 React 组件。为什么?我看这个例子并以同样的方式输入我的代码 https://github.com/rackt/react-router#whats-it-look-like
你的
window.Router = window.ReactRouter;
应该是
window.Router = window.ReactRouter.Router;
您收到错误是因为您尝试使用 <Router />
,但 Router
是对 React Router 库(而不是 Router
组件)的引用。
我正在修改 react-router
,试图实现简单的路由。我按照他们示例中的代码输入代码(但没有 import
s)https://github.com/rackt/react-router#whats-it-look-like.
我在浏览器中收到此错误:
Uncaught Error: Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.
这就是我所做的。
我在页面上附加了脚本,ReactRouter.min.js
和我的代码在 react-routes.js
中。还有 react
和 react-dom
和 jquery(app.js
中的所有三个):
<script src="/js/app.js" type="text/javascript" charset="utf-8"></script>
<script src="https://npmcdn.com/react-router/umd/ReactRouter.min.js"></script>
<script src="/js/react-routes.js" type="text/javascript" charset="utf-8"></script>
这是我的react-router.js
,还没有编译:
'use strict';
window.Router = window.ReactRouter;
window.Link = window.ReactRouter.Link;
window.Route = window.ReactRouter.Route;
const Foo = React.createClass({
render() {
return (
<div>
<h1>HELLO, me FOO</h1>
</div>
)
}
});
ReactDOM.render((
<Router>
<Route path="/" >
<Route path="/page/one" component={Foo}/>
</Route>
</Router>
), document.getElementById('content-section'))
这是我用 Babel 编译后的 react-router.js
。我在页面上附上了这个:
babel --presets react -o public/js/react-routes.js assets/js/react-routes.js
:
'use strict';
window.Router = window.ReactRouter;
window.Link = window.ReactRouter.Link;
window.Route = window.ReactRouter.Route;
const Foo = React.createClass({
displayName: "Foo",
render() {
return React.createElement(
"div",
null,
React.createElement(
"h1",
null,
"HELLO, me FOO"
)
);
}
});
// Error is thrown here, in this line
ReactDOM.render(React.createElement(
Router,
null,
React.createElement(
Route,
{ path: "/" },
React.createElement(Route, { path: "/page/one", component: Foo })
)
), document.getElementById('content-section'));
我做错了什么?为什么抛出错误?路由器是一个对象,而不是 React 组件。为什么?我看这个例子并以同样的方式输入我的代码 https://github.com/rackt/react-router#whats-it-look-like
你的
window.Router = window.ReactRouter;
应该是
window.Router = window.ReactRouter.Router;
您收到错误是因为您尝试使用 <Router />
,但 Router
是对 React Router 库(而不是 Router
组件)的引用。