Reaccionar el comportamiento del conmutador
(react-router-dom
versión: 4.1.1)
Tengo rutas de trabajo configuradas, pero estoy un poco confundido acerca de por qué<Switch>
fue necesario:
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>
);
}
}
Solía tener undiv
envolviendo las rutas en lugar de unSwitch
. En ese caso, veo elApp
renderizado e intente hacer clic en el enlace Fridge, pero no sucede nada (elFridgePage
no se procesa), y no se genera ningún error en la consola.
Según tengo entendido, lo único queSwitch
hace representa exclusivamente la primera ruta que coincide, y el problema común como resultado de omitirlo es representar ambas páginas a la vez. Si mi"/"
la ruta es exacta, entonces incluso sin el Switch, el Fridge debería ser la única ruta que coincida, ¿verdad? ¿Por qué no se procesa en absoluto?