我尝试了什么?
方法 1 动态路由
方法 2 自定义 @nuxtjs/router 模块与推送
简单的问题
最佳答案
无需重新加载页面或刷新dom,history.pushState
可以完成这项工作。
在你的组件或其他地方添加这个方法来做到这一点:
addHashToLocation(params) {
history.pushState(
{},
null,
this.$route.path + '#' + encodeURIComponent(params)
)
}
因此,在您的组件中的任何位置,请调用
addHashToLocation('/my/new/path')
使用 window.history 堆栈中的查询参数推送当前位置。将查询参数添加到当前位置 不插入新的历史输入,使用
history.replaceState
反而。Should work with Vue 2.6.10 and Nuxt 2.8.1.
Be careful with this method!
Vue Router don't know that url has changed, so it doesn't reflect url after pushState.
由于 Vue Router 不反射(reflect)更改,因此无法获取 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)
关于vue.js - 如何在 Nuxt SSR 模式下更改页面的 URL 而无需重新加载整个页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58465065/