7

使用 nuxt.jsfetch()时,每当我重新加载页面时,它都不会再次获取它。仅当我来自路由器链接时。如何强制它从我的 API 中重新获取?

export default {
    async fetch() {
        const data = await this.$axios.$get(`/users/${this.$route.params.name}`)
        this.user = data
    },
    data() {
        return {
            user: []
        }
    }
}

我查看的每个页面,他们总是在页面刷新时显示占位符,同时从他们的 API 重新获取,为什么我的 Nuxt.js 应用程序在刷新时不这样做?它只是没有从我的 API 重新获取数据,这很奇怪。

4

3 回答 3

3

刚刚遇到同样的问题。

在浏览了有关 fetch 的 Nuxt 文档的选项部分后,似乎将 fetchOnServer 选项设置为 false 会在客户端和页面重新加载(服务器端)上触发 fetch 挂钩,从而解决了问题:

fetchOnServer: false
于 2021-04-18T16:01:08.827 回答
2

我相信,在 Nuxt.JS 中,仅在从路由器导航渲染时调用 fetch 方法 - 手动重新加载不会触发此操作。

也许您可以使用beforeMount()代替构造一个mixin,fetch()并将其应用于需要它的页面。

或者,当然,就在页面本身:

async beforeMount() {
    const data = await this.$axios.$get(`/users/${this.$route.params.name}`)
    this.user = data
},

https://nuxtjs.org/blog/understanding-how-fetch-works-in-nuxt-2-12/

于 2020-08-25T22:41:06.137 回答
0

在进行 Nuxt 静态站点时,似乎没有可行的重新加载问题解决方案。如果数据未在 fetch 挂钩中加载,我的一个选项是在挂载的挂钩中调用 fetch:

  mounted() {
     if (!this.loaded) this.$fetch()
  },

Fetch 作为一种方法

于 2021-08-23T15:48:05.207 回答