Conforme declarado na resposta de @msoliman , withRoutertambém dá acesso a matche location. Seria bom se a resposta aceita mencionasse isso, já que redirecionar o usuário não é o único caso de uso para withRouter. Caso contrário, este é um bom self-qna.
Michael Yaworski
Além disso, se você precisar do <Link> e do <NavLink> do roteador, é necessário usar o HOC withRouter.
thewebjackal
Acho que a resposta seria mais completa se mencionada por que historyou matchnão está presente por padrão? ou seja, por que withRouterdeve ser mencionado explicitamente?
Emran BatmanGhelich
43
withRouteré um componente de ordem superior que passará a rota mais próxima match, atual locatione historyprops para o componente encapsulado sempre que ele renderizar. simplesmente conecta o componente ao roteador.
Nem todos os componentes, especialmente os componentes compartilhados, terão acesso aos props desse roteador. Dentro de seus componentes empacotados, você seria capaz de acessar locationprop e obter mais informações location.pathnameou redirecionar o usuário para uma url diferente usando this.props.history.push.
Aqui está um exemplo completo da página do github:
importReactfrom"react";importPropTypesfrom"prop-types";import{ withRouter }from"react-router";// A simple component that shows the pathname of the current locationclassShowTheLocation extends React.Component{static propTypes ={
match:PropTypes.object.isRequired,
location:PropTypes.object.isRequired,
history:PropTypes.object.isRequired
};
render(){const{ match, location, history }=this.props;return<div>You are now at {location.pathname}</div>;}}// Create a new component that is "connected" (to borrow redux// terminology) to the router.constShowTheLocationWithRouter= withRouter(ShowTheLocation);
withRoutero componente de ordem superior permite que você obtenha acesso às historypropriedades do objeto e à correspondência mais próxima <Route>. withRouterirá passar adereços atualizados match, locatione historypara o componente encapsulado sempre que ele renderizar.
importReactfrom"react";importPropTypesfrom"prop-types";import{ withRouter }from"react-router";// A simple component that shows the pathname of the current locationclassShowTheLocation extends React.Component{static propTypes ={
match:PropTypes.object.isRequired,
location:PropTypes.object.isRequired,
history:PropTypes.object.isRequired
};
render(){const{ match, location, history }=this.props;return<div>You are now at {location.pathname}</div>;}}// Create a new component that is "connected" (to borrow redux// terminology) to the router.constShowTheLocationWithRouter= withRouter(ShowTheLocation);
withRouter é um componente de ordem superior que passará pela rota mais próxima para obter acesso a alguma propriedade quanto à localização e correspondência dos adereços ele só pode ser acessado se fornecer ao componente a propriedade localizada no componente
<Route to="/app" component={helo} history ={history}/>
e mesmo a prosperidade de correspondência e localização para ser capaz de alterar a localização e usado this.props.history.push deve ser fornecido para cada propriedade do componente deve fornecer, mas quando usado WithRouter pode ser acesso à localização e correspondência sem adicionar histórico de propriedade pode ser acessado em direção sem adicionar histórico de propriedade para cada rota.
withRouter
também dá acesso amatch
elocation
. Seria bom se a resposta aceita mencionasse isso, já que redirecionar o usuário não é o único caso de uso parawithRouter
. Caso contrário, este é um bom self-qna.history
oumatch
não está presente por padrão? ou seja, por quewithRouter
deve ser mencionado explicitamente?withRouter
é um componente de ordem superior que passará a rota mais próximamatch
, atuallocation
ehistory
props para o componente encapsulado sempre que ele renderizar. simplesmente conecta o componente ao roteador.Nem todos os componentes, especialmente os componentes compartilhados, terão acesso aos props desse roteador. Dentro de seus componentes empacotados, você seria capaz de acessar
location
prop e obter mais informaçõeslocation.pathname
ou redirecionar o usuário para uma url diferente usandothis.props.history.push
.Aqui está um exemplo completo da página do github:
Mais informações podem ser encontradas aqui .
fonte
withRouter
o componente de ordem superior permite que você obtenha acesso àshistory
propriedades do objeto e à correspondência mais próxima<Route>
.withRouter
irá passar adereços atualizadosmatch
,location
ehistory
para o componente encapsulado sempre que ele renderizar.fonte
withRouter é um componente de ordem superior que passará pela rota mais próxima para obter acesso a alguma propriedade quanto à localização e correspondência dos adereços ele só pode ser acessado se fornecer ao componente a propriedade localizada no componente
e mesmo a prosperidade de correspondência e localização para ser capaz de alterar a localização e usado this.props.history.push deve ser fornecido para cada propriedade do componente deve fornecer, mas quando usado WithRouter pode ser acesso à localização e correspondência sem adicionar histórico de propriedade pode ser acessado em direção sem adicionar histórico de propriedade para cada rota.
fonte