试图让react-router(v4.0.0)和react-hot-loader(3.0.0-beta.6)很好地播放,但是在浏览器控制台中得到以下错误:
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.
index.js:
import React from 'react'; import ReactDom from 'react-dom'; import routes from './routes.js'; require('jquery'); import 'bootstrap/dist/css/bootstrap.min.css'; import 'bootstrap/dist/js/bootstrap.min.js'; import './css/main.css'; const renderApp = (appRoutes) => { ReactDom.render(appRoutes,document.getElementById('root')); }; renderApp( routes() );
routes.js:
import React from 'react'; import { AppContainer } from 'react-hot-loader'; import { Router,Route,browserHistory,IndexRoute } from 'react-router'; import store from './store/store.js'; import { Provider } from 'react-redux'; import App from './containers/App.jsx'; import Products from './containers/shop/Products.jsx'; import Basket from './containers/shop/Basket.jsx'; const routes = () => ( <AppContainer> <Provider store={store}> <Router history={browserHistory}> <Route path="/" component={App}> <IndexRoute component={Products} /> <Route path="/basket" component={Basket} /> </Route> </Router> </Provider> </AppContainer> ); export default routes;
大多数情况下,这是因为您没有正确导出/导入。
常见错误:
// File: LeComponent.js export class LeComponent extends React.Component { ... } // File: App.js import LeComponent from './LeComponent'; // no "default" export,should be export default class LeComponent
有几种方法可能是错误的,但这种错误是由于每次都有60%的时间导入/导出错误。
编辑
通常,您应该获得一个堆栈跟踪,指示发生故障的位置的大致位置。这通常紧跟在您原始问题中的消息之后。
如果它没有显示,可能值得调查原因(它可能是您缺少的构建设置)。无论如何,如果它没有显示,唯一的行动方针是缩小导出/导入失败的地方。
遗憾的是,没有堆栈跟踪的唯一方法是手动删除每个模块/子模块,直到你不再得到错误,然后按照你的方式备份堆栈。
编辑2
原文地址:https://www.jb51.cc/react/301361.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。