Problem with useLazyFetch with nuxt bridge

99 views Asked by At

I am trying to use useLazyFetch in a project where I recently upgraded from nuxt 2 to nuxt-bridge.

Like described here: https://nuxt.com/docs/bridge/bridge-composition-api#useasync-and-usefetch I thought I could use this code:

<script>
import config from '~/config.mjs'

export default {
  setup() {
    const items = ref()
    const posts = ref()
    const fetching = ref(false)
    const { filterState, removeEmpty } = useFilterManager()
    const { $moment } = useNuxtApp()
    const runtimeConfig = useRuntimeConfig()
    const { getTaxonomyTermBySlug } = useTaxonomies()

    const fetchEvents = async (filterObject) => {
      try {
        fetching.value = true
        const endpoint = `${runtimeConfig.public.BACKEND_URL}${config.endpoints.events}`
        const { data: posts, pending } = await useLazyFetch(endpoint, {
          params: filterObject,
        })
        // Alternative:
        // const { data, pending } = await useLazyFetch(endpoint, {
        //   params: filterObject,
        // })
        // items.value = data?.items


      } catch (error) {
        console.error('Error fetching events:', error) 
      } finally {
        fetching.value = false
      }
    }

    watch(
      posts, 
      (newValue) => {
        console.log('newValue: ', newValue)
      },
      { deep: true }
    )
    // ...
  

My problem is, that posts nor items are never updated. I can watch them, I export them to use in the template.

I can see in the network tab that the request is done and finished and that the response contains the items I need, but the rendered content is never updated...

What am I missing?

Also I would expect that await useLazyFetch only assigns the response to items.value whenever the call is done. Unfortunately items is never updated, how so?

I also tried to use the watch command with { deep: true, immediate: true }, but this does not work.

0

There are 0 answers