Reputation:
I want to build a simple weather report app using React Router. This is my code:
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter as Router, Route, IndexRoute, hashHistory} from 'react-router-dom';
var Main = require('Main');
var Weather = require('Weather');
var About = require('About');
ReactDOM.render(
<Router history={hashHistory}>
<Route path="/" component={Main}>
<Route path="/Weather" component={Weather} />
<Route path="/About" component={About} />
</Route>
</Router>,
document.getElementById('app')
);
when I try the code above, I get a warning that says:
You should not use <Route component> and <Route children> in the same route; <Route children> will be ignored
And when I change my code to this:
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter as Router, Route, IndexRoute, hashHistory} from 'react-router-dom';
var Main = require('Main');
var Weather = require('Weather');
var About = require('About');
ReactDOM.render(
<Router history={hashHistory}>
<Route path="/" component={Main} />
<Route path="/Weather" component={Weather} />
<Route path="/About" component={About} />
</Router>,
document.getElementById('app')
);
I get an error that says A <Router> may have only one child element
.
What should I do to fix this problem?
Upvotes: 1
Views: 256
Reputation: 104369
Wrap all the routes in a div
, like this:
ReactDOM.render(
<Router history={hashHistory}>
<div>
<Route path="/" component={Main} />
<Route path="/Weather" component={Weather} />
<Route path="/About" component={About} />
</div>
</Router>,
document.getElementById('app')
);
Or use Switch:
ReactDOM.render(
<Router history={hashHistory}>
<Switch>
<Route path="/" component={Main} />
<Route path="/Weather" component={Weather} />
<Route path="/About" component={About} />
</Switch>
</Router>,
document.getElementById('app')
);
Upvotes: 1
Reputation: 299
you can fix the second problem to have only one child element by putting for example div tag inside Router and put all your routes in it as the follows
ReactDOM.render(
<Router history={hashHistory}>
<div>
<Route path="/" component={Main} />
<Route path="/Weather" component={Weather} />
<Route path="/About" component={About} />
</div>
</Router>,
document.getElementById('app')
);
Upvotes: 0