2017-12-28 27 views
1

Ich bin sehr neu zu reagieren Lernen, ich habe begonnen, mit Router in react.js zu arbeiten. Wenn ich versuche, Router zu machen bekomme ich diesen Fehler A <Router> may have only one child element Error in react.A <Router> kann nur ein Kind Element Fehler in der Reaktion

Mein Code ist wie folgt:

Datei: Index.js

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import './index.css'; 
import App from './App'; 

ReactDOM.render(<App />, document.getElementById('root')); 

Datei: App.js

import React, { Component } from 'react'; 
import { 
    Route, 
    NavLink, 
    HashRouter 
} from "react-router-dom"; 
import Home from "./Home"; 
import Stuff from "./Stuff"; 
import Contact from "./Contact"; 

class App extends Component { 
    render() { 
    return (
      <HashRouter> 
     <div> 
        <div> 
          <h1>Simple SPA</h1> 
          <ul className="header"> 
           <li><NavLink to="/">Home</NavLink></li> 
      <li><NavLink to="/stuff">Stuff</NavLink></li> 
      <li><NavLink to="/contact">Contact</NavLink></li> 
          </ul> 
      </div> 
         <div className="content"> 
      <Route exact path="/" component={Home}/> 
      <Route path="/stuff" component={Stuff}/> 
      <Route path="/contact" component={Contact}/> 
      </div> 
        </div> 
      </HashRouter> 
    ); 
  } 
} export default App; 

Es gibt separate Dateien für Home.js , Stuff.js und Contact.js.

Ich habe sogar versucht, Switch zu verwenden, aber immer noch den gleichen Fehler. Kann jemand vorschlagen, was hier falsch läuft?

+0

Ihr Code funktioniert gut für mich, ohne irgendwelche Änderungen. Schau es dir hier an: https://codesandbox.io/s/38zryy518q – Shishir

+0

@Shishir: es funktioniert nicht auf meiner lokalen Umgebung. –

Antwort

2

Ihre App.js sieht gut aus. Das ist wirklich seltsam. Sind Sie sicher, dass Sie diesen Code erstellt haben?

Sie können versuchen, Ihre index.js zu ändern:

import React from 'react'; 
import { 
    HashRouter 
} from "react-router-dom"; 
import ReactDOM from 'react-dom'; 
import './index.css'; 
import App from './App'; 

ReactDOM.render(<HashRouter><App /></HashRouter>, document.getElementById('root')); 

Und entfernen HashRouter von App.js. Überprüfen Sie, ob es hilft.

+0

Das ist seltsam! es funktionierte aber jeder spezifische Grund? –

+0

Keine Ahnung. Vielleicht hat Webpack es nicht gebaut oder sowas. Dein Code sieht gut aus. –

+1

@Konard: Danke Kumpel :) –

Verwandte Themen