Fix base tag hash history create href #578
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is related to #577. This changes
createHashHistory
'screateHref
to produce absolute URLs only when a<base>
tag is present on the page. It works like this:The net effect of this will be to allow the browser to correctly mark links as visited.
This is because, when a base tag is present, the relative hash url will point relative to the base as far as the browser is concerned ( e.g.
"/the/base/#/the/path?the=query#the-hash"
) while a history push to that location will do the right thing and update the href to"<part of current url up to hash>#/the/path?the=query#the-hash"
ignoring the base.So when history is used in
HashRouter
for example, clicking a link will update the location correctly but it won't get marked as visited from the browser. Producing absolute URLs fromcreateHref
when the base tag is present fixes this. Always creating absolute URLs fromcreateHref
would make the code and tests a bit simpler, but I thought only doing it when a base tag is present was less obtrusive. Let me know what you think.