0

我已经在我的 nuxt.js 应用程序中安装了 axios。这是我的配置文件代码:

文件:nuxt.config.js

modules: [
  '@nuxtjs/vuetify',
  '@nuxtjs/axios',
],

axios: {
  // proxyHeaders: false
}

这是我的示例工作代码:

export default {
  data() {
    return {
      ip: ''
    }
  },
  async asyncData({ $axios }) {
    const ip = await $axios.$get('http://icanhazip.com')
    return { ip }
  }
}

这里是我不工作的代码:

export default {
  data() {
    return {
      ip: ''
    }
  },
  methods: {
    async asyncData() {
      const ip = await this.$axios.$get('http://icanhazip.com')
      this.ip = ip
    }
  } 
}

为什么内部methodsaxios 请求不起作用?

4

2 回答 2

1

您不能在方法对象中调用 asyncData。asyncData 仅用于预渲染。

将您的函数重命名为其他名称,应该没问题:

export default {
  data() {
    return {
      ip: ''
    }
  },
  methods: {
    async getData() {
      const ip = await this.$axios.$get('http://icanhazip.com')
      this.ip = ip
    }
  } 
}

此外,当您在顶部示例中使用 asyncData 时,您不应在数据函数中初始化“ip”。无论如何,从 asyncData 返回的内容都会合并到数据中。

于 2019-06-19T22:12:50.257 回答
0

每次加载页面之前都会调用 AsyncData 方法,还要注意 asyncdata 仅在 nuxt 的页面组件中可用。您无法通过 asyncData 内部的 this 访问组件实例,因为它是在启动组件之前调用的您可以在模板中使用从 asyncData 数据返回的数据,而无需在数据中进行初始化。

Nuxt 异步数据

于 2019-06-25T02:35:03.583 回答