0

I have an application with this config for history:

import { createHashHistory } from 'history';
import { ConnectedRouter } from 'connected-react-router';

const history = createHashHistory({
  hashType: 'slash',
});
    ...
  <ConnectedRouter history={history}>
    <App />
  </ConnectedRouter>

But all my routes get appended by /# ex: localhost:8080/ becomes: localhost:8080/#/

I already tried to update my packages as this question say but it didn't work.

The only thing that worked was change createHashHistory to createBrowserHistory, but I'm not sure what's the difference between them, and why createHashHistory is appending the /#

Lucas Andrade
  • 4,315
  • 5
  • 29
  • 50
  • 1
    Hash routing in general is UI routing that contains a `/#/`. It utilizes the `hashchange` and `window.location.hash` API to simulate routing. Alternately, UI routing uses the `history` API to update the URL and store previous states in browser memory. – Austin Ezell May 28 '20 at 20:54

1 Answers1

4

With hashHistory, it produces url like http://yourwebsite.net/#page/xxx

With browserHistory, it produces url like http://yourwebsite.net/page/xxx

Which one to use? In real-world products, browserHistory is mostly used. A rule of thumb is "if you are using a dynamic server that can handle dynamic URLs then you need to use the BrowserRouter component but if you are using a server that only serves static files then a HashRouter component is what to be used in this case."

In your code, hashType: 'slash' is just the default value.

vcycyv
  • 606
  • 7
  • 9