Comment passer un paramètre avec this.props.history.push('/page')
dans React-Router v4?
.then(response => {
var r = this;
if (response.status >= 200 && response.status < 300) {
r.props.history.push('/template');
});
reactjs
react-router
IshanGarg
la source
la source
Route
devrait avoir accès àthis.props.location
,this.props.history
etc. Je pense que vous n'avez pas besoin d'utiliserref
plus avec v4. Essayez de fairethis.props.history.push('/template');
props
au composant qui correspond à l'itinéraire? Je pense que ce fil GitHub répond à votre préoccupation.Réponses:
Tout d'abord, vous n'avez pas besoin de le faire
var r = this;
car celaif statement
fait référence au contexte du rappel lui-même qui, puisque vous utilisez la fonction flèche, fait référence au contexte du composant React.Selon les documents:
Ainsi, pendant la navigation, vous pouvez passer des accessoires à l'objet historique comme
ou de même pour le
Link
composant ou leRedirect
composantpuis dans le composant qui est rendu avec
/template
route, vous pouvez accéder aux accessoires passés commeGardez également à l'esprit que lorsque vous utilisez des objets d'historique ou de localisation à partir d'accessoires, vous devez connecter le composant
withRouter
.Selon les documents:
la source
this.props.history.push('/template',response.data)
pas pourquoi ne pas travailler. Selon les documents depush(path, [state])
, ne pensez-vous pas que cela devrait fonctionner?vous pouvez utiliser,
this.props.history.push("/template", { ...response })
outhis.props.history.push("/template", { response: response })
alors vous pouvez accéder aux données analysées du
/template
composant en suivant le code,const state = this.props.location.state
En savoir plus sur React Session History Management
la source
Pour les versions antérieures :
Et obtenez les données dans le composant associé comme ci-dessous:
Pour les versions plus récentes, la méthode ci-dessus fonctionne bien, mais il existe une nouvelle méthode:
Et obtenez les données dans le composant associé comme ci-dessous:
Astuce : le
state
nom de la clé a été utilisé dans les versions antérieures et pour les versions plus récentes, vous pouvez utiliser votre nom personnalisé pour transmettre des données et l'utilisation dustate
nom n'est pas essentielle.la source
Extension de la solution (suggérée par Shubham Khatri) pour une utilisation avec les crochets React (à partir de 16,8):
Passer des paramètres avec l'historique push:
Accès au paramètre passé à l'aide de useLocation à partir de 'react-router-dom':
la source
Si vous devez transmettre des paramètres d'URL
theres une grande explication de poste par Tyler McGinnis sur son site, Lien vers le poste
voici des exemples de code:
sur le composant history.push:
this.props.history.push(`/home:${this.state.userID}`)
sur le composant routeur, vous définissez l'itinéraire:
<Route path='/home:myKey' component={Home} />
sur le composant Home:
la source
Il n'est pas nécessaire d'utiliser withRouter. Cela fonctionne pour moi:
Dans votre page parent,
Ensuite, dans ComponentA ou ComponentB, vous pouvez accéder
, y compris la méthode this.props.history.push.
la source
withRouter
parce que vous avez encapsulé votre composantBrowserRouter
, qui fonctionne de la même manière.props
bas dans chaque composant qui comprend l'history
hélice.Pour utiliser React 16.8+ (withHooks), vous pouvez utiliser cette méthode
Source ici pour en savoir plus https://reacttraining.com/react-router/web/example/auth-workflow
la source
Ajoutez des informations pour obtenir les paramètres de requête.
Pour plus d'informations sur URLSearchParams, consultez ce lien URLSearchParams
la source