【发布时间】:2021-05-28 17:00:01
【问题描述】:
TLDR,在这 3 之间进行集成时出现错误。但是当我将 Meteor 与 ChakraUI 一起使用时,它运行良好。但是当我添加反应路由器时,它会抛出这个错误
警告:React.createElement:类型无效 - 应为字符串(用于内置组件)或类/函数(用于复合组件)但得到:未定义。您可能忘记从定义组件的文件中导出组件,或者您可能混淆了默认导入和命名导入。
所以在 Meteor 中,我使用 ChakraUI 提供程序和浏览器路由器将应用程序包装在 client/main.jsx 中。 Chakra 需要在 their docs 的基础上将应用程序包装在他们的提供程序中。
import React from 'react';
import { Meteor } from 'meteor/meteor';
import { render } from 'react-dom';
import { App } from '/imports/ui/App';
import { ChakraProvider } from "@chakra-ui/react"
import { ColorModeScript } from "@chakra-ui/react"
import { BrowserRouter } from 'react-router-dom'
Meteor.startup(() => {
render(
<ChakraProvider>
<ColorModeScript initialColorMode={'dark'} />
<BrowserRouter>
<App/>
</BrowserRouter>
</ChakraProvider>,
document.getElementById('react-target'));
});
然后在 imports/ui/App.jsx 我把 react route switch 来渲染页面。在此之前,我将 Home.jsx 代码放入其中。
import React from "react";
import {
BrowserRouter as Router,
Switch,
Route,
Link
} from "react-router-dom";
import {Home} from './pages/Home'
export default function App() {
return (
<>
<div>
<Switch>
<Route path="/">
<Home />
</Route>
</Switch>
</div>
</>
);
}
那么在我的代码中是否有任何错误的方式来“包装”应用程序?
谢谢
【问题讨论】:
标签: reactjs meteor react-router meteor-react chakra-ui