Diferencia entre los eventos creados y montados en Vue.js


181

Documentación describe el Vue.js createdy mountedeventos de la siguiente manera:

created

Se llama sincrónicamente después de crear la instancia. En esta etapa, la instancia ha terminado de procesar las opciones, lo que significa que se ha configurado lo siguiente: observación de datos, propiedades calculadas, métodos, devoluciones de llamada de observación / evento. Sin embargo, la fase de montaje no se ha iniciado y la propiedad $ el aún no estará disponible.

mounted

Se invoca después de que se haya montado la instancia donde el se reemplaza por el vm. $ El recién creado. Si la instancia raíz está montada en un elemento en el documento, vm. $ El también estará en el documento cuando se llame montado.

Este enlace no se llama durante la representación del lado del servidor.

Entiendo la teoría, pero tengo 2 preguntas con respecto a la práctica:

  1. ¿Hay algún caso en el createdque se usaría mounted?
  2. ¿Para qué puedo usar el createdevento en una situación de la vida real (código real)?

13
createdse llama anteriormente, por lo que tiene sentido activar la recuperación de datos desde el back-end de la API, por ejemplo.
Egor Stambakio

44
Puede confirmar que todos los ejemplos en el libro Fullstack Vue se usan created()para despachar acciones para llamadas de API.
chovy

Respuestas:


255

created(): dado que el procesamiento de las opciones ha finalizado, tiene acceso a datapropiedades reactivas y cámbielas si lo desea. En este momento, DOM no se ha montado ni agregado todavía. Entonces no puedes hacer ninguna manipulación DOM aquí

mounted(): se llama después de que se haya montado o representado el DOM. Aquí tiene acceso a los elementos DOM y la manipulación DOM se puede realizar, por ejemplo, obtenga el innerHTML:

console.log(element.innerHTML)

Entonces tus preguntas:

  1. Is there any case where created would be used over mounted?

Created se usa generalmente para obtener datos de la API de back-end y configurarlo en propiedades de datos. Pero en SSR mounted()hook no está presente, debe realizar tareas como recuperar datos solo en hook creado

  1. What can I use the created event for, in real-life (real-code) situation?

Para recuperar cualquier dato inicial requerido que se representará (como JSON) desde una API externa y asignarlo a cualquier propiedad de datos reactivos

data:{
    myJson : null,
    errors: null
},
created(){
    //pseudo code
    database.get().then((res) => {
        this.myJson = res.data;
    }).catch((err) => {
        this.errors = err;
    });
}

66
Cuando se crea una llamada API, ¿espera que se completen todas las operaciones asíncronas antes de pasar a la siguiente etapa del ciclo de vida?
Ominus

10
@Ominus no, no espera, Ejecuta este violín- jsfiddle.net/1k26sqrx/] y revisa los registros de la consola
Vamsi Krishna

1
Me di cuenta de que cuando se utiliza montado () en lugar de creado (). Vue prueba si el conjunto de variables reactivas realmente existe como variable reactiva. Si no, se produce un error. Este no es el caso en created () "La propiedad o método" foo "no se define en la instancia, sino que se hace referencia durante el render. Asegúrese de que esta propiedad sea reactiva".
Rob Juurlink
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.