RosettaJS: Comparativas de Vue, React y Angular

Estado y reactividad

Estado Reactivo

El estado reactivo permite guardar un valor que, al cambiar, actualiza la interfaz automáticamente.

Ejemplo

Incrementar un contador que aumenta su valor cada vez que se pulsa un botón.

Vueref

<script setup lang="ts">
import { ref } from 'vue';

const count = ref(0);

function increment() {
  count.value++;
}
</script>

<template>
  <button @click="increment">
    Count: {{ count }}
  </button>
</template>

Guarda el valor en un ref para que el componente reaccione automáticamente cuando cambia.

ReactuseState

function Counter() {
  const [count, setCount] = useState(0);

  function increment() {
    setCount(prevCount => prevCount + 1);
  }

  return (
    <button onClick={increment}>
      Count: {count}
    </button>
  );
}

Guarda el valor con useState y vuelve a renderizar el componente cuando se actualiza.

Angularsignal

import { Component, signal } from '@angular/core';

@Component({
  selector: 'app-counter',
  standalone: true,
  template: `
    <button (click)="increment()">
      Count: {{ count() }}
    </button>
  `
})
export class CounterComponent {
  count = signal(0);

  increment() {
    this.count.update(val => val + 1);
  }
}

Guarda el valor en un signal y lo actualiza con update para propagar automáticamente el cambio.