reactjs – React.createElement:type无效 – 期望一个字符串,但得到:object

前端之家收集整理的这篇文章主要介绍了reactjs – React.createElement:type无效 – 期望一个字符串,但得到:object前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我今天刚刚升级到Webpack 2.2并且已经阅读了他们的指南,这些指南似乎仍在进行中.

我在设置我的应用程序以使用webpack-dev-server和热模块重新加载时遇到了困难.

我通过webpack文档关注的指南在这里,但我不得不修改它以使用开发/生产应用程序.

https://webpack.js.org/guides/hmr-react/

我得到的两个错误如下……

  1. Uncaught Error: _registerComponent(...): Target container is not a DOM element.
  2. at invariant (eval at <anonymous> (index.js:2),<anonymous>:44:15)
  3. at Object._renderNewRootComponent (eval at <anonymous> (index.js:64),<anonymous>:311:44)
  4. at Object._renderSubtreeIntoContainer (eval at <anonymous> (index.js:64),<anonymous>:401:32)
  5. at render (eval at <anonymous> (index.js:64),<anonymous>:422:23)
  6. at hotRenderer (eval at <anonymous> (index.js:73),<anonymous>:41:28)
  7. at eval (eval at <anonymous> (index.js:73),<anonymous>:47:5)
  8. at eval (eval at <anonymous> (index.js:73),<anonymous>:54:5)
  9. at Object.<anonymous> (index.js:73)
  10. at e (index.js:1)
  11. at Object.<anonymous> (index.js:146)

  1. Warning: React.createElement: type is invalid -- expected a string (for built-in components)
  2. or a class/function (for composite components) but got: object.
  3. printWarning @ warning.js?8a56:36
  4. warning @ warning.js?8a56:60
  5. createElement @ ReactElementValidator.js?a599:171
  6. hotRenderer @ index.js?2018:30
  7. (anonymous) @ index.js?2018:35
  8. (anonymous) @ index.js?2018:25
  9. (anonymous) @ index.js:73
  10. e @ index.js:1
  11. (anonymous) @ index.js:146
  12. e @ index.js:1
  13. (anonymous) @ index.js:1
  14. (anonymous) @ index.js:1

我相信问题可能在于我的app文件正在导出一个由Redux Provider组成的组件,其中包含一个React Router Router.

以下是两个罪魁祸首文件

index.js

  1. import './lib/styles.css'
  2. import React from 'react'
  3. import { render } from 'react-dom'
  4.  
  5. import App from './App'
  6.  
  7. if (process.env.NODE_ENV === 'development') {
  8. const { AppContainer } = require('react-hot-loader')
  9. const hotRender = (Component) => {
  10. render(
  11. <AppContainer>
  12. <Component/>
  13. </AppContainer>,document.getElementById('root')
  14. )
  15. }
  16.  
  17. hotRender(App)
  18.  
  19. if (module.hot) {
  20. module.hot.accept('./App',() => {
  21. const NewApp = require('./App').default
  22. hotRender(NewApp)
  23. })
  24. }
  25. } else {
  26. render(App,document.getElementById('app'))
  27. }

App.js

  1. import React from 'react'
  2. import { Provider } from 'react-redux'
  3. import { createStore } from 'redux'
  4. import store from './redux/store'
  5.  
  6. import { Router,hashHistory } from 'react-router'
  7. import routes from './routes'
  8.  
  9. let s = createStore(store,process.env.NODE_ENV === 'development' ? (
  10. window.__REDUX_DEVTOOLS_EXTENSION__ &&
  11. window.__REDUX_DEVTOOLS_EXTENSION__()
  12. ) : null
  13. )
  14.  
  15. const App = () => (
  16. <Provider store={s}>
  17. <Router history={hashHistory} routes={routes} />
  18. </Provider>
  19. )
  20.  
  21.  
  22. export default App

如果您想检查具有更改的整个PR,那将是非常棒的!代码位于:https://github.com/awitherow/aether/pull/64/files

我为一些滑入PR的CSS更改道歉,但我在这里完成的所有Webpack 2.2及更高版本的升级都是潜在的!

编辑

我尝试了一些修复,简单的修复…但它们没有解决任何问题.

> X将应用程序包装在div中,以便它会以某种方式认为它是一个DOM元素.
> X导出App作为扩展Component的类

您使用的是哪个版本的React Router?我在控制台中也收到了Warning:React.createElement错误,但是从版本3.0.2切换到4.0.0-alpha.6预发布版本为我摆脱了它.

猜你在找的React相关文章