- SetParametersAsync:
Blazor llama a esto para **inyectar parámetros** en el componente. Solo sobrescríbelo si necesitas **interceptar** o **validar** parámetros *antes* de que Blazor los asigne, o para aplicar valores por defecto personalizados. Normalmente **no lo toques**; usa OnParametersSet{Async}.
- OnInitizalized{Async}:
Se ejecuta **una sola vez** cuando el componente se crea (antes del primer render). Ideal para **cargar datos iniciales** que no dependen de parámetros del padre.
- OnAfterRenderAsync:
Se ejecuta **después de que el componente se haya renderizado en el DOM**. Úsalo para:
- Integrarte con **JS interop** que necesita elementos ya montados.
- Medir el DOM, usar ResizeObserver, inicializar librerías JS.
Recibe firstRender (solo la versión Async) para correr cierta lógica **solo en el primer render** y evitar bucles.
- OnParametersSet{Async}:
Se ejecuta **en el primer render y cada vez que cambian los \[Parameter]** (o \[CascadingParameter]). Úsalo cuando **tu lógica depende de los parámetros** (por ejemplo, cambiar un filtro si cambió UserId).
- StateHasChanged: Fuerza un **re-render** del componente cuando cambias estado **fuera** del flujo normal de Blazor (timers, callbacks JS, websockets, etc.). Llama siempre desde el **hilo del renderer** (si vienes de otro hilo, usa InvokeAsync(StateHasChanged) para no romper nada).