Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

212
Vistas
Svelte: de lo contrario, si la condición del bloque no se evalúa después de que cambie la condición del bloque

Editar: es un error https://github.com/sveltejs/svelte/pull/7043

Teniendo en cuenta el siguiente ejemplo , uno esperaría que 'bar' se representara bajo la segunda regla horizontal siempre que foo sea false y bar[0] sea true .

 <script> let foo = true let bar = [false]; </script> <button on:click={() => foo = !foo}> Toggle foo </button> <button on:click={() => bar[0] = !bar[0]}> Toggle bar </button> <hr> {@html `foo: ${foo}, bar: ${bar.every(x => x)}`} <hr> {#if foo} foo! {:else if bar.every(x => x)} bar! {/if}

Sin embargo, si se ejecutan los siguientes pasos, la reactividad aparentemente se rompe:

  1. Establecer foo en true
  2. Establecer bar[0] en true
  3. Establecer foo en false

No se representa nada bajo la regla horizontal aunque se cumpla la condición de bloque else if . Este no es el caso si la condición else if es simplemente bar[0] , por lo que parece que el uso de una función es la causa de que no se evalúe. Comportamiento similar cuando bar es true antes de que se cambie foo y false después de que foo se cambie de nuevo, inesperadamente 'bar' se representa en la parte inferior.

El mismo efecto se puede observar cuando foo se cambia entre null y [] con la condición else if siendo Array.isArray(bar) .

¿Es esto un error o me estoy perdiendo algo?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No es realmente un error, es un comportamiento esperado en su escenario, cuando cambió foo to true , luego bar to true ahora la barra está configurada y cuando cambió foo to false nuevamente, ¡la bar didn't change si lo piensa para activar la reactividad!

la solución para eso es activarlo usted mismo una vez que cambie cualquiera de los valores:

 {#key foo || bar} {#if foo} foo! {:else if bar.every(x => x)} bar! {/if} {/key}

Aquí hay una réplica de trabajo

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda