Skip to content

Reactividad y estado

Alpine.js permite definir y manipular el estado reactivo directamente en el HTML usando x-data y otras directivas.

¿Cómo funciona la reactividad en Alpine.js?

Section titled “¿Cómo funciona la reactividad en Alpine.js?”

Alpine.js utiliza un sistema reactivo similar al de frameworks modernos, pero directamente en el HTML. Cuando defines datos con x-data, cualquier cambio en esos datos se refleja automáticamente en la interfaz.

Contador reactivo
<div x-data="{ contador: 0 }">
<button @click="contador++">Incrementar</button>
<span x-text="contador"></span>
</div>

En este ejemplo, contador es reactivo: cada vez que haces clic en el botón, el valor mostrado se actualiza automáticamente.

Enlace bidireccional con x-model
<div x-data="{ nombre: '' }">
<input x-model="nombre" placeholder="Escribe tu nombre" />
<p>Hola, <span x-text="nombre"></span>!</p>
</div>

El input y el texto están sincronizados: cualquier cambio en el input se refleja en el estado y viceversa.

Computed properties (propiedades derivadas)

Section titled “Computed properties (propiedades derivadas)”

Puedes usar funciones dentro de x-data para crear propiedades derivadas:

Propiedad computada
<div x-data="{ a: 2, b: 3, get suma() { return this.a + this.b } }">
<span x-text="suma"></span>
</div>

Alpine.js permite observar cambios en propiedades usando $watch:

Uso de $watch
<div x-data="{ mensaje: '' }" x-init="$watch('mensaje', value => console.log(value))">
<input x-model="mensaje" placeholder="Escribe algo" />
</div>
🐝