问题
Router is rendering the page on the same page than to generate a new page. What might be the problem? Whenever I click the link Polls , it renders the page only there but the URL is shown as changed in the browser.
Polls.js
import React from 'react';
import {Link} from "react-router-dom";
class Polls extends React.Component{
render() {
return(
<div>
<h1>Polls Page</h1>
<p>This is Polls Page </p>
</div>
)
}
}
export {Polls}
Choices.js
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
import {Polls} from "./Polls";
class ShowChoice extends React.Component{
render() {
return(
<Router>
<Link to='/polls'>Polls</Link>
<Route path='/polls' component={Polls} />
</Router>
)
}
}
And the ShowChoice
is rendered inside APP
flow of rendering is like
index>APP>ShowChoices
(link to the Polls inside ShowChoices)
and my APP.js
is
class App extends React.Component {
render() {
return (
<ShowChoice formResult={this.state.result} />
);
}
}
export default App;
回答1:
You have added your Route
in ShowChoice
component. Your ShowChoice
component is then added to App
component.
So whenever yo click the Link
, your URL will get changed but it will render the component in App
component only. So your App
component's content is also visible to you.
To make it feel like you get new page when you click the Link
, you need to combine all the Route
at top level, may be in a separate component,
const Routers = () => {
return (
<BrowserRouter>
<Switch>
<Route exact path="/" component={App} />
<Route path="/polls" component={Polls} />
</Switch>
</BrowserRouter>
)
}
So this will render App
component by default on first render, which will render ShowChoice
component added in App
component and you will see Link
for your Polls
component.
Now clicking on Link
, you will get new page of your Polls
component.
Demo
回答2:
Try to change path and use exact
like that
<Route exact path="/polls" component={Polls}/>
More info: https://github.com/ReactTraining/react-router/blob/master/packages/react-router/docs/api/Route.md
来源:https://stackoverflow.com/questions/57788712/router-rendering-the-component-on-the-same-page-rather-than-rendering-in-a-new-p