错误是:一个<router>可能只有一个子元素

时间:2018-10-22 15:17:56

标签: javascript reactjs

在我保存代码的网站页面上说:A可能只有一个子元素时,我在React.js中遇到问题

问题出在哪里,我该如何解决?

谢谢

import React, { Component } from 'react';
import Head from './component/head';
import Contacts from './component/contacts';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'
import Addcontacts from './component/Addcontacts';

import { Provider } from "./context";

import 'bootstrap/dist/css/bootstrap.min.css';

class App extends Component {
    render() {
        return (
            <Provider>
                <Router>
                    <Head promo = 'alow' />
                    <div className='container'>
                        <Switch>
                            <Route exact path='/' Component={Contacts} />
                            <Route exact path='/add' Component={Addcontacts} />
                        </Switch>
                    </div>
                </Router>
            </Provider>
        );
    }
}

export default App;

3 个答案:

答案 0 :(得分:0)

您可以使用React.Fragment https://reactjs.org/docs/fragments.html#short-syntax来解决此问题。

     <Router>
        <>
          <Head promo = 'alow' />
          <div className='container'>
            <Switch>
              <Route exact path='/' Component={Contacts} />
              <Route exact path='/add' Component={Addcontacts} />
            </Switch>
          </div>
       </>
     </Router>

因此基本上,您小的时候只需要一个标签即可。

答案 1 :(得分:0)

像这样在您的<Router>内将所有内容包装在一个<div>

<Router>
  <div>
  // all your content
  </div>
 </Router>

答案 2 :(得分:0)

路由器期望this.props.children或长度等于 1

您的情况超过1

因此,如果您包装所有属性。在单个标签内应该可以正常工作

您可以使用任何这些

<> => React.Fragment
<div> => DIV

例如:

class App extends Component {
      render() {
        return (
          <Provider>
            <Router>
                <div>
                  <Head promo = 'alow' />
                  <div className='container'>
                    <Switch>
                      <Route exact path='/' Component={Contacts} />
                      <Route exact path='/add' Component={Addcontacts} />
                    </Switch>
                  </div>
                </div>
            </Router>
          </Provider>
        );
      }
    }