Why is it designed as below? it will cause history.replaceState method to be called #3447
Labels
contribution welcome
fixed on 4.x
This issue has been already fixed on the v4 but exists in v3
improvement
Version
3.4.9
Reproduction link
https://vesaas.com/?a=1&b=2&a=2
Steps to reproduce
input https://vesaas.com/?a=1&b=2&a=2 into webBroswer . then it becomes to https://vesaas.com/?a=1&a=2&b=2
What is expected?
do not trigger history.replaceState called
What is actually happening?
history.replaceState was called.
src/history/html5.js
ensureURL (push?: boolean) { if (getLocation(this.base) !== this.current.fullPath) { const current = cleanPath(this.base this.current.fullPath) push ? pushState(current) : replaceState(current) } }
src/util/query.js
`function parseQuery (query: string): Dictionary {
const res = {}
query = query.trim().replace(/^(?|#|&)/, '')
if (!query) {
return res
}
query.split('&').forEach(param => {
const parts = param.replace(/\ /g, ' ').split('=')
const key = decode(parts.shift())
const val = parts.length > 0
? decode(parts.join('='))
: null
})
return res
}`
The text was updated successfully, but these errors were encountered: