元素类型无效:期望字符串(对于内置组件)或类/函数

Var*_*ani 15 reactjs redux

import React from 'react';
import ReactDOM from 'react-dom';
import Map from './components/map/container/map';
import App from './App';
import './index.css';
import shell from './shared/utility/shell';
import { render } from 'react-dom'
import { Provider } from 'react-redux'
import { createStore, applyMiddleware, compose } from 'redux'
import { routerMiddleware, ConnectedRouter } from 'react-router-redux'
import thunk from 'redux-thunk'
import createHistory from 'history/createBrowserHistory'
import rootReducer from './reducers'
import registerServiceWorker from './registerServiceWorker';
import { Routes } from './config';

const history = createHistory();
const target = document.querySelector('#root')
const initialState = {};
const enhancers = [];
const middleware = [
thunk,
routerMiddleware(history)
 ];

if (process.env.NODE_ENV === 'development') {
const devToolsExtension = window.devToolsExtension;

if (typeof devToolsExtension === 'function') {
enhancers.push(devToolsExtension());
 }
}
const composedEnhancers = compose(
applyMiddleware(...middleware),
  ...enhancers
);
const store = createStore(
 rootReducer,
 initialState,
 composedEnhancers
);
render(
  <Provider store={store}>
   <ConnectedRouter history={history}>
    <div>
     <Routes />
    </div>
   </ConnectedRouter>
  </Provider>,
  target
   )
 registerServiceWorker();
 ReactDOM.render(<App />, document.getElementById('root'));
 registerServiceWorker();
Run Code Online (Sandbox Code Playgroud)

我试图在redux的帮助下调用API并在表中显示其数据.我收到了这个错误.以上是我的index.js档案.


1.元素类型无效:期望一个字符串(用于内置组件)或一个类/函数(用于复合组件)但得到:undefined.您可能忘记从其定义的文件中导出组件.


2. React.createElement:type无效 - 期望一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:undefined.您可能忘记从其定义的文件中导出组件.

我提到了许多答案,我无法识别错误.

Vik*_*ini 17

问题出在import语句中.在导入某些组件时,您没有使用大括号createHistory.

如果组件使用默认导出,例如:

export default X
Run Code Online (Sandbox Code Playgroud)

然后你可以简单地导入它:

import X from './X';
Run Code Online (Sandbox Code Playgroud)

但是,如果您使用的命名导出如下:

export const X=1;
Run Code Online (Sandbox Code Playgroud)

然后你需要用大括号导入它,如:

import {X} from './X';
Run Code Online (Sandbox Code Playgroud)

那么看看你的进口.这将解决您的问题.


Olu*_*ide 13

我在 React 应用程序中遇到了同样的问题。如上所述,这绝对是您的导入语句。我变了:

import {x} from '/x.js'import x from '/x.js'

这就完成了工作


TMi*_*Min 7

当嵌套组件之一尝试渲染不存在的组件时,我也遇到了此错误。具体来说,我尝试使用

<Button ... /> 
Run Code Online (Sandbox Code Playgroud)

React 中的一个反应原生组件,我应该在其中使用

<button ... />
Run Code Online (Sandbox Code Playgroud)