¿Cuándo usarías `ref`, `reactive`, `shallowRef`, `shallowReactive` o `markRaw`?
¿Cuándo usarías `ref`, `reactive`, `shallowRef`, `shallowReactive` o `markRaw`? en Vue senior: explicación técnica directa, decisiones de diseño y errores ha...
Difícil ReactividadRendimientoInteroperabilidad
Respuesta
- Usa
refpara valores simples o cuando quieras reemplazar el objeto entero con claridad;reactiveencaja mejor cuando mutas varias propiedades relacionadas. shallowRefyshallowReactiveson útiles cuando no quieres observación profunda de un objeto pesado o controlado por una librería externa.markRawsirve para dejar claro que una instancia no debe volverse reactiva, como editores, mapas o clientes SDK.
Puntos clave
computeddebe ser puro y servir para derivar; cuando introduces efectos laterales ahí, el modelo mental deja de ser fiable.watchywatchEffectson herramientas para sincronizar con el exterior, no para construir una cadena de estado derivado.- En Vue conviene distinguir siempre fuente de verdad, dato derivado y efecto externo porque casi todos los bugs reactivos rompen una de esas fronteras.
Errores comunes
- Usar watchers para derivar datos que podrían salir de
computedintroduce sincronizaciones manuales y fallos difíciles de seguir. - Copiar valores reactivos a variables locales sin
toRefsostoreToRefsrompe la relación con la fuente de verdad.
Ejemplo de código
const editor = shallowRef<Editor | null>(null);
const filters = reactive({ status: "open" });
editor.value = markRaw(createEditor());
filters.status = "closed";
Ejemplo o caso real
En una pantalla con filtros, carga remota y varios estados locales, estas decisiones afectan directamente a si la UI se mantiene estable o empieza a comportarse de forma impredecible.
Idea clave
Si separo fuente de verdad, derivación y efecto, la mayoría de problemas reactivos pierden fuerza.
¿Completaste esta sección?
Marcarla como leída actualiza tu progreso.