Hemos dicho que cuando definimos una vista diferida, el único bloque obligatorio es el @defer {}.
A parte del @defer podemos agregar:
@placeholder : Ya dijimos y hemos trabajado con este bloque que aparece mientras la vista no ha sido activada. Este contenido se reemplaza con el contenido principal una vez que se completa la carga.
@loading : El bloque @loadinge es un bloque opcional que le permite declarar el contenido que se mostrará durante la carga de del bloque @defer. Por ejemplo, podría mostrar una rueda giratoria de carga mientras el contenido se recupera de un servidor.
@defer { <componente></componente> } @loading (after 100ms; minimum 1s) { <img alt="cargando..." src="cargando.gif" /> }
El bloque @loading acepta dos parámetros opcionales para especificar la mínima cantidad de tiempo que se debe mostrar el bloque y la cantidad de tiempo que se debe esperar para que comience la carga antes de mostrar la plantilla de carga. minimum y after los parámetros se especifican en incrementos de tiempo de milisegundos (ms) o segundos (s).
Al igual que @placeholder, estos parámetros existen para evitar el parpadeo rápido del contenido en el caso de que las dependencias diferidas se recuperen rápidamente. Tanto los temporizadores minimum como after para el bloque @loading comienzan inmediatamente después de que se haya activado la carga del @defer.
@error : El bloque @error permite declarar contenido que se mostrará si falla la carga diferida.
@defer { <componente></componente> } @loading (after 100ms; minimum 1s) { <img alt="cargando..." src="cargando.gif" /> } @error { <p>Problemas con el servidor</p> }
Imaginemos que se corta la conexión con el servidor, cuando se trate de recuperar el archivo que almacena <componente></componente>, se dispara el bloque @error.