The fetch Method
Nuxt >= 2.12
Nuxt.js v2.12 introduces a new hook called fetch in any of your Vue components.
fetch(context) has been deprecated, instead you can use an anonymous middleware in your page: middleware(context)
When to use fetch?
Every time you need to get asynchronous data. fetch is called on server-side when rendering the route, and on client-side when navigating.
It exposes $fetchState at the component level:
$fetchState.pending:Boolean, allows you to display a placeholder whenfetchis being called on client-side.$fetchState.error:nullorError, allows you to display an error message$fetchState.timestamp:Integer, is a timestamp of the last fetch, useful for caching withkeep-alive
If you want to call the fetch hook from your template use:
<button @click="$fetch">Refresh</button>
or component method:
// from component methods in script section
export default {
  methods: {
    refresh() {
      this.$fetch()
    }
  }
}
You can access the Nuxt context within the fetch hook using this.$nuxt.context.
Options
fetchOnServer:BooleanorFunction(default:true), callfetch()when server-rendering the pagefetchDelay:Integer(default:200), set the minimum executing time in milliseconds (to avoid quick flashes)
  
When `fetchOnServer` is falsy (`false` or returns `false`), `fetch` will be called only on client-side and `$fetchState.pending` will return `true` when server-rendering the component.
<script>
  export default {
    data() {
      return {
        posts: []
      }
    },
    async fetch() {
      this.posts = await this.$http.$get(
        'https://jsonplaceholder.typicode.com/posts'
      )
    },
    fetchOnServer: false
  }
</script>
