réagir-routeur de rediriger vers une autre url de domaine
Je suis à l'aide de réagir-routeur pour le côté client de routage. J'ai un bouton et quand on clique sur le bouton, je veux rediriger l'utilisateur vers une url différente.
Pour l'e.g je veux rediriger l'utilisateur vers "http://www.google.com". J'ai utilisé la navigation mixin et utilisé cette.transitionTo("https://www.google.com"). Mais quand je fais cela, j'obtiens cette erreur
L'Invariant de Violation: Impossible de trouver une route nommée "https://www.google.com".
Je peux utiliser la fenêtre.emplacement mais est-ce la bonne façon de faire?
OriginalL'auteur sanjeev | 2015-06-28
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin
react-router
pour les liens externes, vous pouvez utiliser le lien régulier des éléments (comme le JSX<a href="..."/>
) l'amende juste.Vous avez seulement besoin
react-router
lorsque vous avez interne de navigation (c'est à dire à partir de la composante à composante) pour laquelle le navigateur la barre d'adresse URL doit faire ressembler votre application est en fait commutation "réel" des Url.Un
<button>
est juste un autre inline élément HTML, commespan
ouimg
oua
, et la seule chose qui rend un bouton est CSS. Donc, vous prenez una
, qui est conçu pour le lien, et de style CSS pour ressembler à votre bouton. Parce que c'est de la sémantique de la conception de votre page/app: vous avez un lien, afin de vous en faire un lien, et puis le style de ce que vous avez besoin. Au lieu de le faire à l'envers, l'endroit où vous commencez avec un bouton et ensuite essayer de le forcer à être un lien. Bien sûr, tout cela est secondaire pour le reste fermement corriger l'informer que vous n'avez pas besoin de réagir-routeur pour liens sortants, comme l'erreur signalée.Désolé - je ne l'ai toujours pas communiquer correctement le défi. Il ne s'agit pas de "faire un lien visible de l'élément de redirection". C'est à propos de la redirection après traitement d'un événement, dans un code de gestionnaire d'événements. Il peut être bouton onClick, ou d'un autre événement, qui a activé le code. À partir de l'intérieur du code, vous avez besoin de rediriger l'utilisateur vers une url externe, basée sur une logique programmatique. La question est de se demander "est-fenêtre.l'emplacement de la bonne façon de le faire?"
Et la réponse est "non, vous utilisation régulière d'un élément de lien". Si vous avez votre propre question à ce sujet, avec plus de détails que l'original posté demandé, n'hésitez pas à poster votre propre question qui renvoie à cette question.
Je vois votre point de vue. Thx.
OriginalL'auteur Mike 'Pomax' Kamermans
Pourquoi ne pas utiliser
location
propriété dewindow
objet? Il fournit même une belle méthode fonctionnelle pour aller à l'emplacement externe. Voir la ref.Donc, si vous avez un composant, dire
puis ajouter
handleClick
qui ferait de la composante ressemblerPas besoin d'importer
window
depuis il est mondial. Devrait fonctionner parfaitement dans n'importe quel navigateur moderne.Aussi, si vous avez un composant qui est déclarée dans une fonction, vous pouvez éventuellement utiliser l'effet crochet pour modifier l'emplacement lors de modifications de l'état, comme
tour de nice. merci
Beau cas d'utilisation de
useEffect
crochets 🙂OriginalL'auteur Fleischpflanzerl
Je ne pouvais pas trouver un moyen simple de le faire Réagir avec le Routeur. @Mike a écrit vous devez utiliser un ancrage (
<a>
tags) lors de l'envoi à l'utilisateur de site externe.J'ai créé un custom
<Link>
composant dynamiquement décider de rendre une Réaction Routeur<Link>
ou régulier<a>
tag.OriginalL'auteur gamliela
Comme indiqué par @Mike "Pomax' Kamermans, vous pouvez simplement utiliser pour naviguer de lien externe.
J'ai l'habitude de le faire de cette façon, avec est-interne-lien
Avertissement: je suis l'auteur de ce est-interne-lien
OriginalL'auteur muhajirframe
J'ai eu le même problème et à mes recherches sur la question découvert que je pouvais tout simplement utiliser un "a href" tag. Si vous utilisez target="_blank" vous devriez écrire votre lien de cette...
OriginalL'auteur Bryan Spearman