J'ai un peu cherché Google, mais je n'ai pas trouvé de réponse claire à la question suivante: Quelle est la différence entre hashHistory et browserHistory dans react-router?
La différence fondamentale est que hashHistory utilise des URL telles que: http://myurl.com/#page/another_page/another_page
Avec BrowserHistory, vous obtenez des URL normales (sans hachage): http://myurl.com/page/another_page/another_page
Je ne pense pas que la question demandait des différences de format, mais plutôt techniques. Nous partageons donc cette réponse avec une différence technique: https://stackoverflow.com/a/42157741/2445694
Fondamentalement, le navigateur n'envoie pas l'URL après le #
Supposons donc qu'un site Web limite les zones réservées aux membres et aux administrateurs. Un utilisateur accède à/member et est invité à se connecter. Cependant, le serveur ne saura pas s'il essayait d'accéder à/admin ou/member avant d'accéder à la page de connexion. savoir où rediriger.
1) Le tableau d’emplacement de l’historique du navigateur contient plus que les emplacements visités dans notre application. Autoriser l’accès à cette liste entraînerait la fuite d’informations sur l’historique de navigation d’un utilisateur auquel les sites Web ne devraient pas être autorisés à accéder.
2) L’historique du navigateur crée des objets d’emplacement dont le chemin est le chemin complet de l’URL. Cependant, vous pouvez spécifier un nom de base pour un historique, auquel cas une partie du chemin complet sera ignorée.
3) L’historique du navigateur dans le serveur de fichiers statique aura un emplacement réel sur notre serveur pour extraire notre code HTML tandis que l’historique du hachage utilise la section de hachage de l’URL pour définir et lire les emplacements.
4) L'historique de hachage est dépendant du fait qu'il stocke toutes les informations de chemin dans le hachage d'une URL.
Première différence
Ils utilisent différentes API Web. <HashRouter>
utilise et lit le hachage de l'URL, <BrowserRouter>
utilise window.history
WEB API.
Deuxième différence
<HashRouter>
est utilisé pour les sites Web statiques d'une page. Idéal pour les projets basés sur un navigateur .<BrowserRouter>
est utilisé pour les sites Web dynamiques. Devrait être utilisé lorsque vous avez un serveur qui gérera les requêtes dynamiques (sait comment répondre à une URL éventuelle).