React.createElement: type is invalid -- expected a string React.createElement: 类型无效 - 期望为字符串

27 浏览
0 Comments

React.createElement: type is invalid -- expected a string React.createElement: 类型无效 - 期望为字符串

尝试让react-router(v4.0.0)和react-hot-loader(3.0.0-beta.6)兼容,但在浏览器控制台中出现以下错误:\n警告:React.createElement:类型无效 - 预期为字符串(用于内置组件)或类/函数(用于复合组件),但得到的是:undefined。你可能忘记从定义组件的文件中导出你的组件。\nindex.js:\n

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());

\nroutes.js:\n

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 = () => (
    
        
            
                
                    
                    
                
            
        
    
);
export default routes;

0
0 Comments

问题的出现的原因是在使用React Router时,没有正确导入所需的模块。解决方法是在App.js文件中正确导入BrowserRouter和Route模块。

具体的解决方法如下:

首先,在命令行中运行以下命令安装react-router-dom模块:

npm i react-router-dom

然后,在App.js文件中导入所需的模块,并定义Home组件和App组件:

import { BrowserRouter as Router, Route } from 'react-router-dom';
const Home = () => 

Home

; const App = () => ( ); export default App;

这样就可以正确地使用React Router,并将props发送/接收到Home组件中了。

0
0 Comments

在使用React时,有时会遇到"React.createElement: type is invalid -- expected a string"的错误。这个错误通常是由于导入模块的方式不正确导致的。

具体问题可能出现在使用React Router库时。在上述情况中,错误的导入方式是使用了错误的语法。正确的导入方式是使用解构赋值的方式将BrowserRouter或AppLoading导入,而不是直接导入整个模块。

出现这个错误的原因是React Router和Expo两个库的导入方式不同。在React Router中,需要通过解构赋值的方式将BrowserRouter导入;而在Expo中,需要直接导入AppLoading。

因此,解决这个问题的方法就是根据具体的库,采用正确的导入方式。在上述例子中,将导入语句修改为import { BrowserRouter } from 'react-router-dom';和import AppLoading from 'expo-app-loading';即可解决问题。

通过以上的修改,我们可以避免"React.createElement: type is invalid -- expected a string"的错误,并正常使用React库中的相关功能。

0
0 Comments

React.createElement: type is invalid -- expected a string 这个问题的出现原因是由于错误的导入/导出。

通常情况下,错误的导入/导出是导致这个问题的原因之一。以下是一个常见的错误示例:

// File: LeComponent.js
export class LeComponent extends React.Component { ... }
// File: App.js
import LeComponent from './LeComponent';

可能的解决方法是:

// File: LeComponent.js 
export default class LeComponent extends React.Component { ... }
// File: App.js
import LeComponent from './LeComponent';

有几种方式可能会出错,但是这个错误的原因60%的可能是由于导入/导出不匹配造成的。

通常情况下,你会得到一个堆栈跟踪,指示失败发生的大致位置。这通常在你原始问题中的消息之后显示。

如果没有显示,可能需要调查为什么(可能是你缺少的构建设置)。无论如何,如果没有显示,唯一的解决方法是缩小导出/导入失败的位置。

可惜的是,如果没有堆栈跟踪,唯一的方法是手动删除每个模块/子模块,直到不再出现错误,然后逐步恢复堆栈。

根据评论,的确是一个导入问题,具体是导入了一个不存在的模块。

根据跟踪,指向了routes.js的第12行。该行是``。

你确定index route实际上是RR4的一部分吗?(我很确定它不是)

问题就出在这里 - 谢谢!我已经恢复到v3.0.0。

很好,很棒。如果这个答案对其他读者有帮助,请标记它为接受的答案,这将帮助其他读者知道如何处理类似的问题。

如果你想继续使用RR4,请按照这个指南操作。我现在也在同一艘船上... github.com/ReactTraining/react-router/blob/master/packages/...

我遇到了`import { Select } from 'react-select';`的问题,并将其改为`import Select from 'react-select';`。

"warning"和"error"是不同的。我遇到了这个警告,导入文件路径是正确的。

仅凭一个小小的评论是无法判断的。你能否发布一个带有详细信息的新问题?

无论是HOC还是其他什么,都不应该有影响。你可以提一个新问题或提供更多信息吗?

在我的情况下,问题是`import { FooBar }`而不是`import { Foobar }`。

查看上面Chris的"Edit 2"。只需确保导入的模块不是空的。这就是我的问题,添加一些内容后问题解决了。

对我来说也是一个导入问题,但一开始看起来并不像,最终追查到了愚蠢的导入错误。

也有可能是`react-redux`被模拟或覆盖了。如果你有一个`__mocks__/react-redux.ts`文件,删除它可能会有所帮助。

对于我来说,问题是导入了一个"default export"的括号。太高兴问题如此简单...感谢帮助!<3

我遇到了相同的错误,并通过将`import { ThumbUpAltIcon } from "-ui/icons/ThumbUpAlt";`改为`import ThumbUpAltIcon from "-ui/icons/ThumbUpAlt";`来解决。

0