React Router v 4-Lösung
Ich bin heute früh auf diese Frage gestoßen, und hier ist das Muster, das ich verwende. Hoffentlich ist dies nützlich für alle, die nach einer aktuellen Lösung suchen.
Ich bin mir nicht sicher, ob dies die beste Lösung ist, aber das ist mein aktuelles Muster dafür. Ich habe normalerweise ein Kernverzeichnis, in dem ich meine häufig verwendeten Komponenten mit ihren relevanten Konfigurationen (Loader, Modals, etc.) aufbewahre, und ich füge eine Datei wie diese hinzu:
import React from 'react'
import { Route } from 'react-router-dom'
const getLocationAwareComponent = (component) => (props) => (
React.createElement(component,
{...routeProps, ...props})}/>
)
export default getLocationAwareComponent
Dann werde ich in der betreffenden Datei Folgendes tun:
import React from 'react'
import someComponent from 'components/SomeComponent'
import { getLocationAwareComponent } from 'components/Core/getLocationAwareComponent'
const SomeComponent = getLocationAwareComponent(someComponent)
// im Render-Methodenbereich:
Sie werden bemerken, dass ich den Standardexport meiner Komponente als bescheidenes Kamelkasus importiere, was es mir ermöglicht, die neue, ortsbezogene Komponente in CamelCase zu benennen, damit ich sie normal verwenden kann. Abgesehen von der zusätzlichen Importzeile und der Zuweisungszeile verhält sich die Komponente wie erwartet und erhält alle ihre Props normal, mit dem Zusatz aller Routenprops. Daher kann ich mit this.props.history.push() fröhlich aus den Lebenszyklusmethoden der Komponente umleiten, den Standort überprüfen usw.
Hoffe, das hilft!