Jes*_*ess 27 reactjs react-router react-router-v4 react-router-dom
(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')
)
Run Code Online (Sandbox Code Playgroud)
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>
);
}
}
Run Code Online (Sandbox Code Playgroud)
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>
);
}
}
Run Code Online (Sandbox Code Playgroud)
我曾经有一个div包裹路线而不是一个Switch.在这种情况下,我看到App渲染并尝试单击Fridge链接,但没有任何反应(FridgePage未渲染),并且没有错误输出到控制台.
据我了解,唯一Switch能做的就是专门渲染它匹配的第一条路径,而省略它的常见问题是同时渲染两个页面.如果我的"/"路线是准确的,那么即使没有Switch,冰箱也应该是匹配的唯一路线,对吗?为什么它根本不渲染?
awc*_*737 42
<Switch> 只返回一个第一个匹配的路由.
exact 返回任意数量的完全匹配的路由.
例如:
<Switch>
<Route exact path="/animals" component={Animals} />
<Route path="/animals/fish" component={Fish} />
<Route component={Missing} />
</Switch>
<Route path="/animals" component={Order} />
Run Code Online (Sandbox Code Playgroud)
如果Missing组件不在a内<Switch>,它将在每个路由上返回.
因此exact,"/ animals"路线不会捕获包含"/ animal"的每条路线,例如"动物/鱼".
没有exact,"/ animals/fish"路线也将返回鱼类成分"动物/鱼/鳕鱼","/动物/鱼/鲑鱼"等.
在<Switch>语句之外,没有exact,Order组件在包含"/ animals"的每个路径上呈现.
通常,如果您没有使用精确版,则会使用通配符,因此您不会返回随机页面.
| 归档时间: |
|
| 查看次数: |
26107 次 |
| 最近记录: |