Verifique a localização anterior do histórico antes de o goBack () reagir ao roteador v4
Meu objetivo é ativar o botão "Voltar", mas apenas se a rota / caminho para o qual o usuário voltar estiver em uma determinada categoria.
Mais precisamente, tenho dois tipos de rotas:/<someContent>
e/graph/<graphId>
. Quando o usuário navega entre os gráficos, deve poder voltar ao gráfico anterior, mas não a um/...
rota. É por isso que não posso simplesmente correrhistory.goBack()
, Preciso verificar o local primeiro.
const history = createHashHistory();
const router = (
<ConnectedRouter history={history}>
<Switch>
<Route exact path='/' component={Home}></Route>
<Route exact path='/extension' component={Home}></Route>
<Route exact path='/settings' component={Home}></Route>
<Route exact path='/about' component={Home}></Route>
<Route exact path='/search' component={Home}></Route>
<Route exact path='/contact' component={Home}></Route>
<Route path='/graph/:entityId' component={Graph}></Route>
</Switch>
</ConnectedRouter>
);
Eu gostaria de implementar algo assim noGraph
componente:
if (this.props.history.previousLocation().indexOf('graph') > -1){
this.props.history.goBack();
} else {
this.disableReturnButton();
}
Esta pergunta também se aplica agoForward()
como eu gostaria de desativar o botão "encaminhar", se não for aplicável. Além disso, o usuário se move comthis.props.history.push(newLocation)
Obviamente, eu gostaria de evitar o uso de truques laterais, como fazer loginlocalStorage
ou um reduxstore
conforme o usuário se move, parece menos natural e eu sei como fazê-lo.