Solución:
Desafortunadamente, esto no es posible. Si está utilizando un nombre de base, se agregará a la base de cada ruta antes de que se cree el href. Esto sucede en el history
módulo en createBrowserHistory
en el push
y replace
métodos que utilizan la siguiente función:
var createHref = function createHref(location) {
return basename + (0, _PathUtils.createPath)(location);
};
usa ya sea push
o replace
método.
Puede encontrar el siguiente bloque de código en el Redirect.prototype.perform
método:
if (push) {
history.push(to);
} else {
history.replace(to);
}
Lo anterior se puede encontrar en Redirect.js
en el react-router
módulo que es lo que react-router-dom
módulo importa y luego exporta.
Para hacer lo que intentas hacer, haría el basename
a const y lo agregó al frente de su camino en cada una de sus rutas.
Es una pena que no haya un ignoreBasename
opción para un <Route />
o <Redirect />
, aunque es implementable.
Como se menciona en la respuesta de Kyle, no hay forma de tener que usar URL absolutas o ignorar el nombre de base; sin embargo, si desea o “necesita” ejecutar la redirección desde el método de renderizado de su componente, puede crear su propio componente ultraligero de “redirección absoluta”, aquí está el mío:
import React from 'react'
class AbsoluteRedirect extends React.Component {
constructor(props){
super(props)
}
componentDidMount(){
window.location = this.props.to
}
render(){
return null
}
}
export default AbsoluteRedirect
Y luego utilícelo en otros componentes con una condición para que solo se monte cuando su validación sea verdadera.
render(){
if( shouldRedirect )
return <AbsoluteRedirect to={ anotherWebsiteURL } />
...
}
Espero que esto ayude 🙂