我对React还是比较陌生,我正在尝试弄清楚如何使React路由器正常工作。我有一个超级简单的测试应用程序,看起来像这样:
import React from 'react'; import ReactDOM from 'react-dom'; import {BrowserRouter as Router, Route, Switch, IndexRoute, Link} from 'react-router-dom'; const Home = () => <h1><Link to= "/about">Click Me</Link></h1> const About = () => <h1>About Us</h1> const Test = () => ( <Router> <Switch> <Route path ="/" component = {Home} /> <Route path ="/about" component = {About} /> </Switch> </Router> ) ReactDOM.render(<Test />, document.getElementById('app'));
当我运行该应用程序时,home组件加载没有任何麻烦,并且当我单击“ Click Me”链接时,URL更改为localhost / about,但是什么也没有发生。如果单击刷新,则会显示“无法获取/关于”。显然我在做错事,但我一直无法弄清楚是什么。我也在使用Webpack。
您需要使用精确的路径,/否则它也将匹配/about。
/
/about
<Route exact path="/" component={Home} />
如评论中所述,对于这种简单的事情,我建议使用Create React App,它将确保您的服务器代码和Webpack设置都正确。使用后,create-react-app您只需要使用npm安装react router v4软件包,然后将上面的代码放入App.js文件中即可。您可以对代码进行一些小的更改以使其create-react-app可以使用,如下所示:
create-react-app
npm
App.js
// App.js import React from 'react'; import { BrowserRouter as Router, Route, Switch, Link } from 'react-router-dom'; const Home = () => <h1><Link to="/about">Click Me</Link></h1> const About = () => <h1>About Us</h1> const App = () => ( <Router> <Switch> <Route exact path="/" component={Home} /> <Route path="/about" component={About} /> </Switch> </Router> ) export default App;
React Router V4文档中的快速入门说明将告诉您几乎与我刚才解释的相同。