javascript - index.js 中的 ReactDOM.render 不会呈现我的应用程序,而是会引发此错误:
问题描述
错误:元素类型无效:需要字符串(对于内置组件)或类/函数(对于复合组件),但得到:对象。检查
Context.Consumer
.
但问题是我没有在我的应用程序中使用 Context,并且 Visual Studio 的控制台没有读取任何错误。
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import 'bootstrap/dist/css/bootstrap.css';
import App from './Components/App.js';
const container = document.getElementById('root')
ReactDOM.render(<App />, container)
应用程序.js
import React from 'react';
import { BrowserRouter, Route, Switch } from 'react-router-dom'
import Inicio from '../Pages/Inicio.js'
import Adopcion from '../Pages/Adopcion.js'
import NotFound from '../Components/NotFound.js'
const App = () => (
<BrowserRouter>
<Switch>
<Route exact path='/inicio' component={<Inicio />}/>
<Route exact path='/inicio/adoptar' component={<Adopcion />}/>
<Route component={NotFound} />
</Switch>
</BrowserRouter>
)
export default App;
我花了整个下午阅读有关 Context 的内容,回到 React 文档,但我不知道如何告诉 React 渲染我的应用程序。谢谢你的回答。
解决方案
您的错误在于您的路线声明,特别是:
component={<Inicio />}
和
component={<Adopcion />}
您在那里所做的是创建实例,即对象,Inicio
并将Adopcion
这些对象作为component
道具传递给路线。正如错误消息所说,它需要一个函数/类,因此您需要传递实际组件,就像您对NotFound
路由所做的那样:
<Route exact path='/inicio' component={Inicio}/>
<Route exact path='/inicio/adoptar' component={Adopcion}/>
<Route component={NotFound} />
错误消息提到的原因Context.Consumer
是因为 react-router 在内部使用它来渲染您的组件,并且 react-router 不会验证您传入的内容,它只是通过它。
推荐阅读
- visual-studio - Visual Studio - 使用用户设置覆盖项目设置
- makefile - 在 makefile 中构建 RELEASE 和 DEBUG
- scala - Apache Spark StreamingQueryListeners 何时触发 onQueryTerminated?
- azure-cognitive-services - 自定义翻译器不适用于 Azure 翻译器
- python - Python多线程线程在继续之前不等待.join()
- javascript - fs.existsSync 不是函数 electron-vue + microsoft graph(webpack 问题)
- angular - 如何在 Angular 上使用 Strophe 在聊天中显示 XMPP 消息?
- mysql - 在 SQL 中创建具有父/子层次结构的表/表
- c++ - cmake Xcode 生成器在发布模式下使用 -O0 代替 -O3 或 -O2
- linux - 带有子参数的 bash 脚本中的 Getopts