Nuxt.js - fetch vs asyncData

Featured image

참고: Data Fetching

참고로 둘다 ssr / csr시에 호출된다.

fetch

nuxt 2.12 이전의 fetch hook과 헷갈리지 말자!

<template>
  <p v-if="$fetchState.pending">Fetching mountains...</p>
  <p v-else-if="$fetchState.error">An error occurred :(</p>
  <div v-else>
    <h1>Nuxt Mountains</h1>
    <ul>
      <li v-for="mountain of mountains"></li>
    </ul>
    <button @click="$fetch">Refresh</button>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        mountains: []
      }
    },
    async fetch() {
      this.mountains = await fetch(
        'https://api.nuxtjs.dev/mountains'
      ).then(res => res.json())
    }
  }
</script>

asyncData

컴포넌트 인스턴스가 생성되기 전에 호출되며 결과값을 컴포넌트 데이터와 병합한다. (before beforeCreate hook)

export default {
  data () {
    return { project: 'default' }
  },
  asyncData (context) {
    return { project: 'nuxt' }
  },
  mounted() {
    console.log(this.project) // nuxt
  }
}


요약