(react-router-dom
版本:4.1.1)陣營路由器交換機行爲
我有工作設置了路線,但我有點困惑,爲什麼<Switch>
是必要的:
index.js
import React from 'react';
import { HashRouter, Route, Switch } from 'react-router-dom';
import App from './components/App.jsx';
import FridgePage from './components/FridgePage.jsx';
ReactDOM.render(
<HashRouter>
<Switch>
<Route exact path="/" component={App} />
<Route path="/fridge" component={FridgePage} />
</Switch>
</HashRouter>,
document.getElementById('root')
)
App.jsx
import Header from './Header.jsx';
import {Link} from 'react-router-dom';
export default class App extends React.Component {
render() {
console.log(this.props);
return (
<div>
<h1>Herbnew</h1>
<Link to="fridge">Fridge</Link>
{this.props.children}
</div>
);
}
}
FridgePage.jsx
import React from 'react';
export default class FridgePage extends React.Component {
render() {
return (
<div>
<h1>Fridge</h1>
You finally found the fridge!
</div>
);
}
}
我曾經有一個div
包裝路線,而不是Switch
。在這種情況下,我看到App
呈現並嘗試點擊冰箱鏈接,但沒有任何反應(FridgePage
未呈現),並且沒有錯誤輸出到控制檯。
據我所知,Switch
做的唯一的事情就是渲染它匹配的第一條路線,而忽略它的常見問題是一次渲染兩個頁面。如果我的"/"
路線是準確的,那麼即使沒有開關,冰箱應該是唯一匹配的路線,對吧?爲什麼它根本不呈現?