Usando history.js con React Router v4

Durante el proceso de aprendizaje de React y Redux que empecé gracias al curso de Udemy impartido por David Katz me encontré con algo que me llamó la atención. David invitaba a los estudiantes de su curso a hacer uso de la versión v3 de la librería React Router, a pesar de que la versión v4 ya estaba disponible.

Y entonces me pregunté: Por qué debemos usar una versión antigua?

Bien, pues resulta que la arquitectura de la nueva versión ha cambiado, consecuentemente también ha cambiado la interfaz de la misma, de modo ahora el uso de la librería es algo distinto.

Así que me negué a aceptar la invitación de David.
Tenía que aprender a usar la versión más reciente!

El problema expuesto surge cuándo quieres hacer uso de la librería mencionada para gestionar las transiciones de la aplicación fuera de los componentes de la misma. Por ejemplo, si quieres redirigir al usuario una vez se ha completado con éxito una petición HTTP que ha sido realizada desde una action.
Veamos el ejemplo que el mismo David propone:

Si probáis de usar este código con la última versión de React Router veréis que no podéis importar el componente browserHistory,  de ahí el principal problema.

Por suerte, después de estar un rato indagando acerca de cómo resolver ésta problemática me encontré con la librería history.js. De hecho, ésta misma referencia la podemos encontrar en las FAQs del repositorio de la librería React Router. La pregunta no deja lugar a dudas.

Una vez conocida esta información procedí con los siguientes pasos para solventar mi problema:

  1.  Exporté el objeto history, para ello creé un fichero history.js dentro de mi aplicación con las siguientes dos líneas:
  2.  El siguiente paso fue vincular el objeto history  a mi Router:
  3. Finalmente importé el objeto history allí dónde quería usarlo, posteriormente ya lo tenía disponible para navegar por mi aplicación:

Y así fue cómo, haciendo uso de la última versión de React Router (v4), conseguí tener acceso al objeto history para poder navegar por mi aplicación de una forma similar a la que provee la anterior versión de la misma librería.

Sin embargo, quiero dejar claro que, al no ser un experto en React, no voy a afirmar que ésta sea la mejor práctica, puesto que es probable que haya casos dónde otro enfoque sea más apropiado. Aún así resulta importante destacar que ésta solución está sugerida por los propios autores de la librería, con lo cuál, me permito el lujo de considerarla como una solución correcta.

Gracias!