Как заблокировать Хедер и Футер пока не отработает useAsyncData?

Для того чтобы заблокировать Хедер и Футер, пока не отработает useAsyncData, вам потребуется использовать логику загрузки данных в Nuxt.js.

Первым шагом будет импортирование необходимых зависимостей и настройка вашего компонента. Давайте предположим, что у вас есть компонент с Хедером и Футером:

<template>
  <div>
    <header>
      <!-- Ваш Хедер -->
    </header>

    <main>
      <!-- Ваш основной контент -->
    </main>

    <footer>
      <!-- Ваш Футер -->
    </footer>
  </div>
</template>

<script>
export default {
  name: 'MyComponent',
}
</script>

Далее, вы можете добавить метод asyncData, чтобы обрабатывать асинхронное получение данных до отображения компонента:

<script>
export default {
  name: 'MyComponent',
  async asyncData() {
    // Здесь вы можете вызвать вашу асинхронную функцию
    const data = await fetchData()

    // Вернуть данные, которые будут доступны в компоненте через `this.$data`
    return { data }
  }
}
</script>

Теперь, для блокировки Хедера и Футера пока данные загружаются, вы можете использовать переменную состояния в вашем компоненте. Например, вы можете добавить свойство loading и установить его значение на true перед загрузкой данных, а затем изменить его на false после загрузки данных:

<script>
export default {
  name: 'MyComponent',
  data() {
    return {
      loading: true,
      data: null
    }
  },
  async asyncData() {
    // Установка состояния загрузки перед вызовом асинхронной функции
    this.loading = true

    // Здесь вы можете вызвать вашу асинхронную функцию
    const data = await fetchData()

    // Обновление состояния загрузки и данных после завершения загрузки
    this.loading = false
    this.data = data

    // Вернуть данные, которые будут доступны в компоненте через `this.$data`
    return { data }
  }
}
</script>

Теперь вы можете использовать состояние загрузки в вашем компоненте, чтобы блокировать Хедер и Футер:

<template>
  <div>
    <header v-if="!loading">
      <!-- Ваш Хедер -->
    </header>

    <main v-if="!loading">
      <!-- Ваш основной контент -->
      {{ data }}
    </main>

    <footer v-if="!loading">
      <!-- Ваш Футер -->
    </footer>

    <div v-if="loading">
      <!-- Ваш индикатор загрузки или другой контент во время загрузки -->
      Загрузка...
    </div>
  </div>
</template>

Теперь при открытии вашей страницы Хедер и Футер будут скрыты, пока данные не будут загружены, и заменены на соответствующий контент после загрузки. Кроме того, во время загрузки будет отображаться "Загрузка...".