libri-javascript-python

In questa lezione parleremo di beforeCreate, un lifecycle hook dei componenti in Vue.js. Gli hooks del ciclo di vita sono metodi predefiniti che sono chiamati in momenti specifici durante il ciclo di vita di un componente Vue. Ricordiamo che i lifecycle hooks consentono di eseguire codice in risposta a eventi come la creazione, l’aggiornamento o la distruzione di un componente.

lifecycle hook beforeCreate in Vue.js – quando è chiamato?

L’hook beforeCreate() viene chiamato prima che l’istanza del componente sia completamente inizializzata e pronta per l’uso. È il primo hook chiamato nel ciclo di vita del componente. Questo significa che il codice all’interno di beforeCreate() viene eseguito prima che il componente abbia accesso ai dati, alle props o ad altre opzioni dichiarate, rendendolo un buon punto di ingresso per eseguire operazioni di inizializzazione esterne o per configurare eventi globali o plugin.

N.B. Il metodo beforeCreate() viene chiamato prima che l’istanza del componente sia completamente inizializzata, ma dopo che le opzioni del componente (come data, methods, ecc.) sono state valutate! beforeCreate è il primo hook del ciclo di vita del componente Vue.js ad essere chiamato

Quando utilizziamo beforeCreate?

Ecco alcune situazioni in cui potremmo voler utilizzare il metodo beforeCreate():

Inizializzazione di variabili esterne: Il metodo beforeCreate() offre un punto di ingresso ideale per inizializzare variabili o proprietà che non sono strettamente legate allo stato interno del componente. Questo potrebbe includere l’acquisizione di dati da un’API esterna o l’inizializzazione di un’istanza di una classe di utilità, preparando il terreno per l’utilizzo all’interno del componente.

Registrazione di eventi globali o plugin: Utilizzando beforeCreate(), è possibile registrare eventi globali o configurare plugin che devono essere disponibili per tutti i componenti dell’applicazione. Questo garantisce che tali configurazioni siano eseguite in fase di inizializzazione del componente, garantendo la loro disponibilità prima che il componente stesso abbia accesso ad esse.

Accesso a opzioni di configurazione esterne: Se il componente necessita di accedere a opzioni di configurazione esterne, come parametri passati tramite props o opzioni globali definite dall’applicazione, il metodo beforeCreate() offre il momento perfetto per accedervi e inizializzare il componente in base a queste opzioni. Questo assicura una corretta configurazione del componente fin dall’inizio del suo ciclo di vita.

Precisazioni

Innanzitutto ricordiamo che il metodo data() viene eseguito prima del metodo beforeCreate(). Questo significa che se i dati sono definiti direttamente in data(), saranno disponibili non appena il componente viene creato. Non c’è bisogno di aspettare l’esecuzione del metodo beforeCreate(). Ovvero se volessi subito visualizzare dei prodotti li inserisco su data in questo modo ad esempio:

export default {
  data() {
    return {
      items: [
        { id: 1, name: 'Prodotto 1' },
        { id: 2, name: 'Prodotto 2' },
        { id: 3, name: 'Prodotto 3' }
      ]
    };
  },
  beforeCreate() {
    // Nessuna richiesta asincrona simulata qui
    // I dati vengono assegnati direttamente alla variabile nel data()
  }
}

In definitiva, se i dati sono statici e non richiedono operazioni aggiuntive o dipendono da altri fattori esterni, definirli direttamente in data() è il modo più semplice e appropriato. Se, invece, ci sono operazioni di inizializzazione o configurazioni specifiche da eseguire, beforeCreate() può essere una buona opzione.

lifecycle hook beforeCreate in Vue.js – esempio

Quindi se vogliamo una situazione in cui i dati dei prodotti, ad esmepio, devono essere ottenuti in modo asincrono prima di essere visualizzati nel componente, possiamo ad esempio utilizzare il metodo beforeCreate.

Facciamo un esempio dove nel metodo beforeCreate(), simuliamo una richiesta asincrona utilizzando setTimeout, e dopo un ritardo di 1 secondo otteniamo dei dati simulati dall’API esterna. Successivamente, assegniamo questi dati alla variabile items del componente. Infine, nella parte del template, iteriamo attraverso gli elementi di items utilizzando una direttiva v-for per visualizzare i nomi dei prodotti nella lista.

Ecco come ho sviluppo il componente:

libro javascript

<template>
    <div>
      <h2>Prodotti</h2>
      <ul>
        <li v-for="prodotto in prodotti" :key="prodotto.id">{{ prodotto.name }}</li>
      </ul>
    </div>
  </template>
  
  <script>
  export default {
    name: 'ProdottiComponent',
    data() {
      return {
        prodotti: [] // Variabile per memorizzare i dati recuperati dall'API
      };
    },
    beforeCreate() {
      // Simuliamo una richiesta asincrona
      setTimeout(() => {
        // Dati simulati ottenuti dall'API esterna
        const data = [
          { id: 1, name: 'Prodotto 1' },
          { id: 2, name: 'Prodotto 2' },
          { id: 3, name: 'Prodotto 3' }
        ];

        this.prodotti = data;
      }, 1000); // Simuliamo un ritardo di 1 secondo per la richiesta
    }
  }
  </script>
  

Il nostro obiettivo è quello di assicurarci che i dati siano disponibili prima che il componente venga completamente creato e renderizzato. Questo è importante perché vogliamo che la nostra lista di prodotti sia popolata correttamente quando il componente viene visualizzato nell’interfaccia utente.

Utilizzando beforeCreate() dunque, possiamo eseguire le operazioni di inizializzazione necessarie prima che il componente sia completamente pronto per l’utilizzo. In questo caso, simuliamo il caricamento asincrono dei dati e li assegniamo alla variabile prodotti all’interno di beforeCreate(), in modo che i prodotti siano pronti per essere visualizzati quando il componente viene renderizzato.

Conclusioni

In questa lezione abbiamo parlato di beforeCreate un lifecycle hook dei componenti in Vue.js.

Questo metodo offre una finestra temporale per eseguire operazioni di inizializzazione prima che il componente sia completamente creato e reso nel DOM. Dunque possiamo configurare lo stato del componente, effettuare chiamate API, inizializzare variabili e altre attività necessarie per preparare il componente prima della sua visualizzazione.

È importante ricordare che il beforeCreate viene eseguito prima che il componente abbia accesso a molte delle sue proprietà e opzioni, quindi è necessario usarlo con attenzione e comprendere il momento in cui si attiva nel ciclo di vita del componente.

Quindi, il metodo beforeCreate in Vue JS è uno strumento molto potente che consente di gestire il processo di inizializzazione dei componenti Vue.js in modo efficiente e pulito.

Alcuni link utili

Tutorial JavaScript

Componenti Vue.js

Option API

Composition API

Counter in Vue.js (con le due sintassi: Option API e Composition API)

Direttiva v-model

props con Option API