您可能忘记从其定义的文件中导出组件,或者您可能混淆了默认导入和命名导入
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了您可能忘记从其定义的文件中导出组件,或者您可能混淆了默认导入和命名导入相关的知识,希望对你有一定的参考价值。
import React from 'react';
import ReactDOM from 'react-dom';
import { createStore } from 'redux';
import createHistory from 'history/createBrowserHistory';
import { Provider } from 'react-redux';
import ConnectedRouter from 'react-router-redux';
import { Route, Switch } from 'react-router';
import Home from "./pages/Home";
import Register from "./pages/Register";
import CourseManagerDashboard from "./pages/CourseManagerDashboard";
import CourseDetail from "./pages/CourseDetail";
import App from './app/App';
import LoginForm from './components/LoginForm';
const store = createStore(
state => state
);
const history = createHistory();
ReactDOM.render((
<Provider store={store}>
<ConnectedRouter history={history}>
<Switch>
<Route name="home" exact path="/" component={Home} />
<Route name="register" path="/register" component={Register} />
<Route name="course-manager-dashboard" path="/course-manager-dashboard" component={CourseManagerDashboard} />
<Route name="course-detail" path="/course-detail" component={CourseDetail} />
<Route name="login" path="/login" component={LoginForm} />
<Route path="/" component={App} />
</Switch>
</ConnectedRouter>
</Provider>
),document.getElementById('app'));
得到以下错误:
元素类型无效:期望一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:undefined。您可能忘记从其定义的文件中导出组件,或者您可能混淆了默认导入和命名导入。无法跟踪问题的确切位置。
答案
我知道这可能听起来很傻,但尝试使用简单的console.log
检查所有导入的组件:
console.log('Provider', Provider);
console.log('ConnectedRouter', ConnectedRouter);
console.log('Route', Route);
console.log('Switch', Switch);
console.log('Home', Home);
console.log('Register', Register);
console.log('CourseManagerDashboard', CourseManagerDashboard);
console.log('CourseDetail', CourseDetail);
console.log('App', App);
console.log('LoginForm', LoginForm);
把它放在ReactDOM.render
之后,在const history = createHistory();
之后
与undefined
在一起的线正在导致问题。
以上是关于您可能忘记从其定义的文件中导出组件,或者您可能混淆了默认导入和命名导入的主要内容,如果未能解决你的问题,请参考以下文章
next.js + expo:您可能忘记从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入