我一直在尝试使用React Router设置一个带有链接的页面,当用户单击链接时,该页面将显示一个新页面。我尝试了在
React Router documentation
但当用户单击链接时,它会在现有页面的底部显示附加页面,而不是显示新页面。
我发现了几个StackOverflow问题(
this
,请
this
,请
this
)这看起来很相似,但我在那里没有找到解决方案——看起来有些人已经让它工作了,但是他们没有发布完整的代码,我也无法正确地猜测他们做了什么。一些地方似乎认为
<Route>
必须在其他文件中才能显示新页面。基于此,我最近的尝试是:
索引文件
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App.js';
import About from './About.js';
import { BrowserRouter as Router, Route, Link, Switch } from 'react-router-dom';
import * as serviceWorker from './serviceWorker';
ReactDOM.render(
<Router>
<Switch>
<Route exact path="/about" component={About} />
<Route exact path="/" component={App} />
</Switch>
</Router>, document.getElementById('root'));
// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: ...
serviceWorker.unregister();
App.JS
import React, { Component } from 'react';
import { BrowserRouter as Router, Route, Link } from 'react-router-dom';
import './App.css';
class App extends Component {
render() {
return (
<Router>
<div>
<h1>This is the main page</h1>
<ul>
<li>
<Link to="/about">About</Link>
</li>
</ul>
<hr />
</div>
</Router>
);
}
}
export default App;
JS
import React, { Component } from 'react';
import { BrowserRouter as Router, Route, Link } from 'react-router-dom';
import './App.css';
function About() {
return (
<div>
<h2>About</h2>
</div>
);
}
export default About;
如果我点击链接,URL栏会显示它正在启动localhost:3000/about。但页面不变。如果刷新浏览器,它就会在自己的页面上重新显示“关于”,这就是我希望它在单击链接时所做的。这是我来的最近的一次,但是我如何让它在不需要刷新的情况下做正确的事情呢?或者是我做错了什么?
React路由器DOM版本为4.3.1。我用的是铬合金。