【发布时间】:2023-03-08 16:05:02
【问题描述】:
我正在使用带有 Webpack 1.9.5 和 traceur-loader 0.6.3 的 React 0.13.3(之前尝试过 babel-loader),在 DefaultRoute 'Cannot call a class as a function' 中得到 _classCallCheck() 抛出的 TypeError .我没有看到我在哪里调用一个类作为一个函数。这是我的路线的样子:
var Application = require('./components/Application');
var Home = require('./components/Home');
var About = require('./components/About');
var MainFeedVideos = require('./components/MainFeedVideos');
var MyUploads = require('./components/MyUploads');
...
var routes = (
//logged out content
<Route flux={flux} handler={Application}>
<DefaultRoute handler={Home} />
<Route name='about' handler={About}/>
...
//logged in content
<Route path='/' name='home' handler={Home}>
<DefaultRoute handler={MainFeedVideos} />
<Route name='my-videos' handler={MyUploads}/>
...
</Route>
</Route>);
Router.run(routes, Router.HistoryLocation, function (Handler) {
React.render(<Handler/>, document.getElementById('content'));
});
以前有人遇到过这个问题吗?
【问题讨论】:
-
你在使用 babel 时是否遇到同样的错误?这段代码没有任何问题,但它可能是您依赖的库,也可能是您的另一个组件。错误指向哪一行?
-
是的,和 babel 完全一样。错误指向 DefaultRoute.js 第 3 行
var _classCallCheck = ...。 -
您如何将 JSX 转换为 Javascript?如果您使用的是 jsx-loader,请检查您是否拥有最新版本。
-
想通了!我在我的
Application和Home组件中使用旧的this.props.activeRouteHandler()而不是<RouteHandler />,它们是顶级路由。我会添加这个作为答案。感谢@FakeRainBrigand 和@Morhaus 的回复!
标签: javascript reactjs webpack react-router traceur