Без перезагрузки страницы или обновления домена, history.pushState
может выполнить эту работу.
Добавьте этот метод в свой компонент или в другое место, чтобы сделать это:
addHashToLocation(params) {
history.pushState(
{},
null,
this.$route.path + '#' + encodeURIComponent(params)
)
}
Поэтому в любом месте вашего компонента вызовите addHashToLocation('/my/new/path')
, чтобы указать текущее местоположение с параметрами запроса в стеке window.history.
Чтобы добавить параметры запроса в текущее местоположение без добавления новой записи в историю , вместо этого используйте history.replaceState
.
Должно работать с Vue 2.6.10 и Nuxt2.8.1.
Будьте осторожны с этим методом!
Vue Router не знает, что URL изменился, поэтому он не отражает URL после pushState.
Поскольку Vue Router не отражает изменения, получить параметры URL невозможно. Поэтому мы должны обрабатывать другую логику для передачи данных между маршрутами. Это можно сделать с помощью выделенного магазина Vuex или просто с помощью событий глобальной шины Nuxt.
// main component
created() {
// event fire when pushState
this.$nuxt.$on('pushState', params => {
// do your logic with params
})
},
beforeDestroy() {
this.$nuxt.$off('pushState')
},
...
// Where there are history.pushState
this.$nuxt.$emit('pushState', params)