首页 > 解决方案 > 一个“一个可能只有一个子元素”这是我得到的错误

问题描述

由于我对 React 完全陌生,我正在尝试将我的应用程序包装在路由器中,但我收到此错误,我将它包装在 div 中但仍然无法工作,有人可以帮助我吗?对不起,如果它不相关或愚蠢的问题。

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import routes from'./routes';
import {Router } from 'react-router-dom';
import history from './history';
import App from './App';

ReactDOM.render(
    <Router history={history} routes={routes} >
       <div>
           <App/>
       </div>
    </Router>, document.getElementById('root')); 

当我使用 1 条路线时,它可以工作,但是当我放 2 条路线时,错误就在这里

import React, { Component } from 'react';
import {BrowserRouter, Route, Switch} from 'react-router-dom';
import AddDetails from './components/AddDetails';
import ShowDetails from'./components/ShowDetails';
import NavBar from "./components/NavBar";

class App extends Component {
    render() {
        return (
            <div >
                <NavBar/>
                <BrowserRouter>

                   <Switch>
                        <Route exact={true} path='/' render={() => (
                            <div>
                                <AddDetails />
                            </div>
                        )}/>
                        <Route exact={true} path='details' render={() => (
                            <div>
                                <ShowDetails />
                            </div>
                        )}/>
                    </Switch>
               </BrowserRouter>

           </div>
        );
    }
}

export default App;

标签: javascriptreactjs

解决方案


这应该有效:

ReactDOM.render((
  <Router history={history} routes={routes} >
     <App/>
  </Router>),
  document.getElementById('root')
);

根据您的更新,您应该用 div 包裹路由器,或者您可以使用 switch:

<BrowserRouter>
  <div>
      <Route exact={true} path='/' render={() => (
              <div>
                  <AddDetails />
              </div>
          )}/>
      <Route exact={true} path='details' render={() => (
                  <div>
                     <ShowDetails />
                  </div>
              )}/>
   </div>
</BrowserRouter>

推荐阅读