Bird
Raised Fist0
Vueframework~10 mins

Nuxt data fetching (useFetch, useAsyncData) in Vue - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to fetch data using useFetch in a Nuxt component.

Vue
<script setup>
const { data, error } = [1]('https://api.example.com/items')
</script>
Drag options to blanks, or click blank then click option'
AuseAsyncData
BuseFetch
CfetchData
DuseData
Attempts:
3 left
💡 Hint
Common Mistakes
Using useAsyncData instead of useFetch when the question asks specifically for useFetch.
Trying to call a non-existent function like fetchData.
2fill in blank
medium

Complete the code to fetch data using useAsyncData with a key in Nuxt.

Vue
<script setup>
const { data, error } = [1]('users', () => $fetch('/api/users'))
</script>
Drag options to blanks, or click blank then click option'
AuseFetch
BfetchAsync
CasyncData
DuseAsyncData
Attempts:
3 left
💡 Hint
Common Mistakes
Using useFetch without a key when the question requires useAsyncData.
Trying to use a non-existent function like fetchAsync.
3fill in blank
hard

Fix the error in the code by completing the blank with the correct property to access the fetched data.

Vue
<script setup>
const { data } = useFetch('/api/posts')
const posts = data[1]
</script>
Drag options to blanks, or click blank then click option'
A.value
B.data
C()
D.fetch
Attempts:
3 left
💡 Hint
Common Mistakes
Trying to access data.data which does not exist.
Calling data() as if it were a function.
4fill in blank
hard

Fill both blanks to create a reactive data fetch with useAsyncData and handle errors.

Vue
<script setup>
const { data, error } = [1]('products', () => $fetch('/api/products'))
if (error[2]) {
  console.error('Failed to load products')
}
</script>
Drag options to blanks, or click blank then click option'
AuseAsyncData
BuseFetch
C!== null
D== null
Attempts:
3 left
💡 Hint
Common Mistakes
Using useFetch when a key is required.
Checking if error == null instead of !== null.
5fill in blank
hard

Fill all three blanks to create a reactive fetch with useFetch, destructure data, and check loading state.

Vue
<script setup>
const { data, error, [1] } = [2]('https://api.example.com/info')
if (![3]) {
  console.log('Loading data...')
}
</script>
Drag options to blanks, or click blank then click option'
Apending
BuseFetch
Cloading
DuseAsyncData
Attempts:
3 left
💡 Hint
Common Mistakes
Using loading property which does not exist in useFetch.
Using useAsyncData without a key.

Practice

(1/5)
1. What is the main difference between useFetch and useAsyncData in Nuxt?
easy
A. useAsyncData automatically refreshes data, useFetch never does.
B. useAsyncData requires a unique key for caching, useFetch does not.
C. useFetch is only for server-side, useAsyncData is client-side only.
D. useFetch caches data with a key, useAsyncData fetches without caching.

Solution

  1. Step 1: Understand useFetch behavior

    useFetch fetches data from a URL quickly but does not require a key for caching.
  2. Step 2: Understand useAsyncData behavior

    useAsyncData needs a unique key to cache the fetched data, allowing more control over data reuse.
  3. Final Answer:

    useAsyncData requires a unique key for caching, useFetch does not. -> Option B
  4. Quick Check:

    Key caching difference = D [OK]
Hint: Remember: useAsyncData needs a key, useFetch is simpler [OK]
Common Mistakes:
  • Thinking useFetch caches data with keys
  • Confusing client/server usage of both
  • Assuming useAsyncData auto-refreshes data
2. Which of the following is the correct syntax to use useAsyncData in a Nuxt component?
easy
A. const { data } = useAsyncData('posts', () => $fetch('/api/posts'))
B. const data = useAsyncData('/api/posts')
C. useAsyncData(() => $fetch('posts'), 'posts')
D. const { data } = useAsyncData(() => fetch('/api/posts'))

Solution

  1. Step 1: Check the required parameters for useAsyncData

    The first parameter is a unique key string, the second is a function returning a promise.
  2. Step 2: Validate each option's syntax

    const { data } = useAsyncData('posts', () => $fetch('/api/posts')) correctly uses a key 'posts' and a fetch function with $fetch. Others miss the key or use wrong order.
  3. Final Answer:

    const { data } = useAsyncData('posts', () => $fetch('/api/posts')) -> Option A
  4. Quick Check:

    Key first, fetch function second = A [OK]
Hint: Key string first, fetch function second in useAsyncData [OK]
Common Mistakes:
  • Omitting the key parameter
  • Swapping parameters order
  • Using native fetch instead of $fetch
3. Given this code snippet in a Nuxt component:
const { data, pending } = useFetch('/api/user')

return { data, pending }

What will pending be initially when the component loads?
medium
A. undefined
B. false
C. true
D. null

Solution

  1. Step 1: Understand useFetch loading state

    pending is a reactive boolean indicating if the fetch is still in progress.
  2. Step 2: Initial value of pending

    When the component loads and fetch starts, pending is true until data arrives.
  3. Final Answer:

    true -> Option C
  4. Quick Check:

    Loading state pending = true [OK]
Hint: pending is true while fetching data [OK]
Common Mistakes:
  • Assuming pending is false initially
  • Confusing pending with data presence
  • Expecting pending to be null or undefined
4. You wrote this code in a Nuxt component:
const { data } = useAsyncData(() => $fetch('/api/items'))

But the data never loads. What is the likely problem?
medium
A. Using $fetch instead of native fetch.
B. Returning data directly instead of inside a function.
C. Not awaiting the useAsyncData call.
D. Missing a unique key as the first argument to useAsyncData.

Solution

  1. Step 1: Check useAsyncData parameters

    useAsyncData requires a unique key string as the first argument for caching.
  2. Step 2: Identify missing key issue

    Omitting the key causes the fetch not to run properly or cache data, so data never loads.
  3. Final Answer:

    Missing a unique key as the first argument to useAsyncData. -> Option D
  4. Quick Check:

    Key missing in useAsyncData = B [OK]
Hint: Always provide a key string first in useAsyncData [OK]
Common Mistakes:
  • Skipping the key argument
  • Confusing $fetch with fetch as cause
  • Expecting useAsyncData to be awaited
5. You want to fetch user data and posts in a Nuxt page using useAsyncData. You want posts to refresh every time the user ID changes. Which approach correctly achieves this?
hard
A. Use useAsyncData with a key including the user ID, e.g., useAsyncData(`posts-${userId}`, () => $fetch(`/api/posts?user=${userId}`)).
B. Use useAsyncData with a fixed key 'posts' and rely on automatic refresh.
C. Use useFetch instead of useAsyncData because it auto-refreshes on param change.
D. Call useAsyncData without a key and manually watch userId to refetch.

Solution

  1. Step 1: Understand caching with keys in useAsyncData

    Keys uniquely identify cached data. Changing the key triggers a new fetch.
  2. Step 2: Use dynamic key with user ID

    Including userId in the key string ensures posts refetch when userId changes.
  3. Step 3: Evaluate other options

    Fixed keys won't refresh; useFetch doesn't auto-refresh on param change; manual watch is more complex.
  4. Final Answer:

    Use useAsyncData with a key including the user ID, e.g., useAsyncData(`posts-${userId}`, () => $fetch(`/api/posts?user=${userId}`)). -> Option A
  5. Quick Check:

    Dynamic key triggers refetch = C [OK]
Hint: Include changing params in key string for refetch [OK]
Common Mistakes:
  • Using fixed keys expecting auto-refresh
  • Assuming useFetch auto-refreshes on param change
  • Skipping key causes no caching or refetch
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard