javascript - 反应 - 反应路由器 - A可能只有一个子元素
问题描述
我是 React 的新手,如果我错了,请纠正我...我使用 Switch 标签将多个路由包含在我的 MainComponent.js 文件中。但是,我仍然收到一条错误消息,提示“A 可能只有一个子元素”。我正在尝试从一页导航到另一页。例如,当我在登录页面中单击菜单时,我想被路由到菜单。请指教出了什么问题。提前致谢。
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import 'bootstrap/dist/css/bootstrap.min.css';
import 'font-awesome/css/font-awesome.css';
import 'bootstrap-social/bootstrap-social.css';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
reportWebVitals();
应用程序.js
import React, { Component } from 'react';
import Main from './components/MainComponent';
import './App.css';
import { BrowserRouter } from 'react-router-dom';
class App extends Component {
// pass dishes to children (MenuComponent.js) as props
/*
constructor(props) {
super(props);
this.state = {
dishes: DISHES
};
}*/
render() {
return (
<BrowserRouter> {/* Make use of React Router */}
<div className="App">
<Main />
</div>
</BrowserRouter>
);
}
}
export default App;
MainComponent.js
// Container Component
import React, { Component } from 'react';
import Menu from './MenuComponent';
import DishDetail from './DishdetailComponent';
import Header from './HeaderComponent';
import Footer from './FooterComponent';
import Home from './HomeComponent';
import { DISHES } from '../shared/dishes'; // .. means to go up one level to src
import { Switch, Route, Redirect } from 'react-router-dom';
class Main extends Component {
// pass dishes to children (MenuComponent.js) as props
constructor(props) {
super(props);
this.state = {
dishes: DISHES,
// selectedDish: null
};
}
/*
onDishSelect(dishId) {
this.setState({selectedDish: dishId});
}
*/
render() {
const HomePage = () => {
return (
<Home />
);
}
return (
<div>
<Header />
<Switch>
<Route path="/home" component={HomePage} />
<Route exact path="/menu" component={() => <Menu dishes={this.state.dishes} />} /> {/* path should exactly match /menu and nothing else after /menu */}
{/* component={() => <Menu dishes={this.state.dishes} />} ----> this will allow to pass props to Menu component */}
<Redirect to="/home" /> {/* if the path doesn't match any above, redirect to /home */}
</Switch>
<Footer />
</div>
);
}
}
export default Main;
解决方案
只需<div className="App">
从您的 App.js 文件中删除 。并使用我在下面写的下面的代码。它将 100% 为您工作。
import { BrowserRouter } from 'react-router-dom';
class App extends Component
{
render() {
return (
<BrowserRouter>
<Main/>
</BrowserRouter>
);
}
}
export default App;
推荐阅读
- java - 即使具有相同的数据,断言也无法比较两个数据类
- mysql - 对 MySQL 表进行排序以在数据表上使用
- excel - “间接”引用循环中的组合框
- java - 如何确保 maven 项目的分发文件的名称与某个版本无关,而是始终包含最新的
- python-3.x - 使用 pytest 在控制台上禁用日志输出的打印
- javascript - 用户连接 Passport 节点时在导航栏中显示选项
- c# - 使用 Avalonia 绑定传递两个命令参数
- spring - 在 Spring Elasticsearch 中使用多个查询搜索多个字段
- android - 如何在屏幕关闭的情况下在 Android 上获取传感器和 gnss 数据?
- html - 我的网站页脚不像页眉那样跨越页面的整个宽度