Mais
Como fazer para passar à História no React Router v4?
Na versão atual do React Router (v3) eu posso aceitar uma resposta do servidor e utilizar o `browserHistory.push' para ir para a página de resposta apropriada. No entanto, isto está't disponível na v4, e I'não tenho certeza qual é a maneira apropriada de lidar com isto.
Neste exemplo, utilizando Redux, components/app-product-form.js chama this.props.addProduct(props)
quando um usuário submete o formulário. Quando o servidor retorna um sucesso, o usuário é levado para a página Carrinho.
// actions/index.js
export function addProduct(props) {
return dispatch =>
axios.post(`${ROOT_URL}/cart`, props, config)
.then(response => {
dispatch({ type: types.AUTH_USER });
localStorage.setItem('token', response.data.token);
browserHistory.push('/cart'); // no longer in React Router V4
});
}
Como posso fazer um redirecionamento para a página do carrinho de compras a partir da função para o React Router v4?
316
3
O React Router v4 é fundamentalmente diferente do v3 (e anterior) e você não pode fazer
browserHistory.push()
como costumava fazer.Esta discussão parece relacionada se você quiser mais informações:
Em vez disso, você tem algumas opções para fazer isso:
Utilizar o componente "comRouter" de alta ordem
Em vez disso, você deve utilizar o componente de alta ordem
withRouter
e embrulhá-lo no componente que vai empurrar para a história. Por exemplo, o componente `withRouter':Consulte a documentação oficial para mais informações:
Utilizar o
contexto
APIUsar o contexto pode ser uma das soluções mais fáceis, mas sendo uma API experimental é instável e sem suporte. Utilize-a apenas quando tudo o resto falhar. Aqui's um exemplo:
Dê uma olhada na ** documentação oficial*** sobre o contexto:
Foi assim que eu o fiz:
Utilize
this.props.history.push('/cart');
para redirecionar para a página do carrinho será guardado no objecto histórico.Aproveita, Michael.
Este.contexto.histórico.push" não vai funcionar.
Consegui fazer com que o empurrão funcionasse assim: