gpt4 book ai didi

javascript - 努克斯 : destroy and recreate current page's component without refresh

转载 作者:行者123 更新时间:2023-11-28 03:31:40 24 4
gpt4 key购买 nike

我有一堆 Vue 组件,并且使用 Nuxt 作为路由层。我的全局布局非常标准:

<template>
<nav>
<nuxt-link to="/foo">foo</nuxt-link> | <nuxt-link to="/bar">bar</nuxt-link> | etc.
</nav>

<main>
<nuxt />
</main>
</template>

在每个页面中,当 vuex 存储中的数据发生更改时,我都会更新查询字符串。如果页面是在服务器端加载的,我会解析查询字符串以将必要的数据预加载到存储中:

<template>
<h1>foo</h1>
<!-- forms and stuff -->
</template>

<script>
export default {
data() {
return {
// static data
}
},

computed: {
fooStoreParams() {
return this.$store.state.foo.params
}
},

watch: {
fooStoreParams: async function() {
await this.$nextTick()

let query = {}

if (this.fooStoreParams.page > 1) {
query.page = this.fooStoreParams.page
}

this.$router.push({ path: this.$route.path, query: query })
}
},

async asyncData({ store, query }) {
let params = {}

let data = {
form: {
page: 1
}
}

if (query.page) {
data.form.page = query.page
params.page = query.page
}

store.dispatch('foo/updateParams', params)
await store.dispatch('foo/getStuffFromAPI')

return data
}
}
</script>

这很好用,但我缺少一个功能。

如果我已经在 /foo?page=2&a=1&b=2我点击/foo主导航中的链接,没有任何反应。考虑到 Nuxt/vue-router 的工作原理,这是有道理的,但我想要发生的是从头开始重新加载页面组件(就像您从 /bar 导航到 /foo 一样)。

我能想到的唯一方法是:1)如果我已经在 <b-link href="/foo"> 上,则执行服务器端请求(例如 /foo?whatever )或 2) 写 resetPage()每个单独页面的方法。

有没有办法告诉 Nuxt 销毁并重新创建当前页面组件?

最佳答案

您需要使用 watchQuery 才能为查询参数启用客户端导航:

watchQuery: ['page', 'a', 'b']

https://nuxtjs.org/api/pages-watchquery/

关于javascript - 努克斯 : destroy and recreate current page's component without refresh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58119361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com