Comment effectuer un appel API dans le hook créé dans Vue 3 ?
P粉744691205
P粉744691205 2023-11-04 08:48:38
0
2
579

Retour en vue après une longue pause. Dans ma solution, j'utilise l'API de composition et après avoir créé le composant, j'ai besoin d'obtenir des données pour pouvoir les afficher plus tard. Dans ma solution actuelle, le modèle est rendu avant l'appel. Erreur probablement stupide mais je n'arrive toujours pas à la comprendre (c'est clair dans vue 2.0 - hook create()).

<template>
  <div>
      <div class="row mb-2 border-top border-bottom" v-for="pizza in pizzas" :key="pizza">
        <div class="col-sm-2">
          <img alt="Vue logo" src="../assets/logo.png" style="height: 100px; width: 135px;">
        </div>
        <div class="col-sm-2 mt-4">
          {{pizza.name}}
        </div>
        <div class="col-md offset-md-2 mt-4">
          price
        </div>
        <div class="col-sm-2 mt-4">
          <button class="btn btn-primary" type="submit">Add</button>
        </div>
      </div>
  </div>
</template>

<script setup>
import {api} from "@/api.js"

let pizzas = null

const GetPizzas = async ()=>{
    await api.get('pizza/pizzas/')
    .then(response=>{
        pizzas = response.data
    })
}
GetPizzas()
</script>


P粉744691205
P粉744691205

répondre à tous(2)
P粉509383150

Votre solution devrait ressembler à ce à quoi vous vous attendiez. Votre API est appelée lorsque le composant est créé, pas après le rendu du composant, car elle n'est pas appelée dans le hook onMounted. De plus, vous devez rendre la pizza réactive.

P粉004287665

La liste des hooks disponibles dans l'API Composition est la suivante :

Avec le modèle protégé 创建最接近的是在setup()函数中运行代码。但是,为了避免使用 v-if="pizzas" de l'API Options, vous devez l'instancier sous la forme d'un tableau vide.

Et, évidemment, vous voulez qu'il soit réactif, alors c'est le cas ref([]),而不仅仅是 [].

<script setup>

import { ref } from 'vue'
import { api } from '@/api.js'

const pizzas = ref([])

const GetPizzas = async () => {
  await api.get('pizza/pizzas/').then((response) => {
    pizzas.value = response.data
  })
}
GetPizzas()

</script>

Remarques :

  • 可以保持不变,因为我们将 pizzas 初始化为空数组。如果您以错误的方式启动它,则需要在根包装元素上设置 v-if="pizzas"Protection.
  • ref 需要为其分配 .value
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!