我安装了react-router-dom并使用此代码进行路由,但我有错误:
import React from 'react';
import ReactDOM from 'react-dom';
import { Route, Switch } from 'react-router-dom';
class Home extends React.Component{
render(){
return(
<h1>Home</h1>
);
}
}
class About extends React.Component{
render(){
return(
<h1>About</h1>
);
}
}
ReactDOM.render(
<Switch>
<Route exact path='/' component={Home}/>
<Route path='/about' component={About}/>
</Switch>,
document.getElementById('main')
);
在reactjs中路由的正确方法是什么?
TNX
答案 0 :(得分:3)
在BrowserRouter
周围包裹Switch
,如下所示
<BrowserRouter>
<Switch>
<Route exact path='/' component={Home} />
<Route path='/about' component={About} />
</Switch>
</BrowserRouter>
以下是codesandbox中的工作代码演示。
答案 1 :(得分:2)
BrowserRouter
<Switch>
arround <BrowserRouter>
代码<Switch>
元素您可以在此链接中找到您要找的任何内容:
https://reacttraining.com/react-router/web/guides/philosophy
我也快速写了一笔:https://codepen.io/FabienGreard/pen/KZgwKO?editors=1010
答案 2 :(得分:0)
Kay概念
需要 <BrowserRouter>
是因为
<Route>
<Path>
<Switch>
我认为您应该为Routes创建不同的组件。
我将在这里解释总体项目结构
您可以创建要容纳<Header>
和<MainContent>
的组件
由于<Header>
将遍历整个应用程序,并且如果路径更改,它也不会更改。您可以在<MainContent>
中包含路由,如果路径更改,路由会更新。
MainContent.js
import { Switch, Route } from 'react-router-dom';
const MainContent = () => (
<main>
<Switch>
<Route exact path='/' component={Home}/>
<Route path='/about' component={About}/>
</Switch>
</main>
)
export default MainContent;
Layout.js
class Layout extends Component {
render() {
return (
<div className={classes.root}>
<Header />
<MainContent />
</div>
);
}
现在,您可以使用<BrowserRouter>
将<Layout>
包装在App.js中。或者您也可以在<MainContent>
中使用它
App.js
import { BrowserRouter } from "react-router-dom";
class App extends Component {
render() {
return(
<BrowserRoter>
<Layout />
</BrowserRouter>
);
}
}