Implementación de Stores Reactivos en SolidJS

Clase 19 de 27Curso de SolidJS

Resumen

¿Qué son los stores en Solid?

Los stores en Solid son una poderosa herramienta para optimizar renderizados y actualizaciones en sistemas reactivos, especialmente cuando tratamos con listas y datos complejos como objetos, maps o sets. Estos se basan en el uso de proxies de JavaScript para gestionar mejor la interacción con estos datos.

¿Cómo funcionan los proxies?

En el mundo de las redes y sistemas, un proxy actúa como un intermediario que modifica la conexión entre el origen y el destino. En JavaScript, los proxies funcionan de manera similar al permitir definir "trampas" o reglas que interceptan diversas operaciones en los objetos, como acceder o modificar propiedades.

  • Origen: el punto de inicio de la conexión.
  • Destino: el final de la conexión.
  • Túnel: el proxy que modifica la conexión según ciertas reglas.

El objetivo es asegurar las conexiones o modificar comportamientos predeterminados.

¿Qué trampas existen en los proxies?

Entre las trampas que se pueden definir dentro de un proxy en JavaScript, encontramos:

  • get: Se activa al intentar acceder a una propiedad.
  • deleteProperty: Se activa al intentar eliminar una propiedad.
  • apply: Se activa cuando se ejecuta una función.

Estas trampas permiten interceptar comportamientos y realizar acciones específicas en respuesta a ellas.

Implementación de stores en Solid

Los stores no solo son otra primitiva dentro de Solid, sino que también son esenciales para manejar datos complejos de manera eficiente. Se construyen sobre la base de proxies, permitiendo establecer un sistema de segregación de lectura y escritura.

¿Cómo se crean los stores?

La creación de stores es similar al patrón utilizado en signals, pero con un énfasis especial en la manipulación de datos complejos. A continuación, un ejemplo de cómo configurar un store:

// Creación de un store
const [todos, setTodos] = createStore([{ //dato complejo
  title: 'Tarea pendiente', done: false 
});

// Uso de trampas
console.log(todos[0].title); // Activará la trampa 'get'

// Modificación
setTodos(0, 'done', true); // Cambios internos en el primer elemento

¿Qué hace que la función de escritura sea especial?

La función de escritura en un store es particularmente sofisticada. No se limita a reemplazar completamente un objeto, sino que permite:

  • Modificar valores internos de datos complejos.
  • Usar paths o rutas para cambiar propiedades internas.

Solid ofrece una implementación avanzada, permitiendo manejar múltiples niveles de profundización en objetos, lo cual puede complicar si lo hacemos por nuestra cuenta.

¿Por qué es importante esta diferenciación?

La flexibilidad en la escritura de datos garantiza que las aplicaciones pueden modificar sus estados de manera precisa y eficiente, sin asumir cargas innecesarias durante los procesos de renderizado.

Aplicación de los stores en situaciones reales

Los stores proporcionan la reactividad que esperas en tus aplicaciones, haciendo que cada modificación dispare una actualización automática y eficiente en la interfaz de usuario. En la práctica, esto se traduce en la implementación de interfaces de usuario dinámicas sin sacrificar rendimiento.

Implementar y experimentar con stores en una aplicación "Todo" es una excelente manera de familiarizarse con el manejo de estados complejos en Solid. Te invitamos a profundizar y seguir aprendiendo para aprovechar al máximo estas herramientas avanzadas.