Uso de Stores en Solid para Optimizar Reactividad y Ergonomía
Clase 20 de 27 • Curso de SolidJS
Resumen
¿Cómo podemos mejorar la reactividad en Solid con Stores?
Solid proporciona una herramienta poderosa llamada stores que permite manejar datos complejos como arreglos, objetos, maps y sets de manera más eficiente y ergonómica. Al cambiar nuestra lista de todos de un signal a un store, no solo mejoramos el rendimiento de nuestra aplicación, sino que también simplificamos el desarrollo al tratar directamente con datos proxy.
¿Qué es un store en Solid?
Un store en Solid es una primitiva especial diseñada para manejar datos complejos. A diferencia de los signals, que son funciones, los stores funcionan como proxies de los datos que contienen. Esto significa que puedes interactuar con ellos como lo harías con arreglos u objetos normales, pero con la ventaja de que Solid gestiona la reactividad y optimización de manera interna, minimizando la necesidad de actualizaciones globales en la interfaz.
¿Cómo implementar un store en una lista de todos?
Para utilizar un store en lugar de un signal, comienza importando la primitiva de SolidJS Store. Luego, cambia las funciones y propiedades que dependen del signal para trabajar directamente con el store. Aquí algunos pasos básicos del proceso:
-
Definición del store:
import { createStore } from 'solid-js/store'; const [todos, setTodos] = createStore([]);
-
Uso de proxies: Reemplaza las funciones que trataban el array como un signal, ya que ahora
todos
es un proxy de un array normal. -
Actualización de la lógica de modificación: Al añadir o modificar elementos en el store, usa el método
set
de los stores, que te permite especificar exactamente qué índice y propiedad del array estás modificando:setTodos(index => todos.length, { text: newItem, completed: false });
¿Cómo optimizar el cambio de estado y contenido?
Solid facilita el cambio de estado mediante funciones específicas dentro de los stores. Esto elimina la necesidad de redefinir o clonar el array completo al cambiar un simple estado o propiedad.
-
Cambio de estado de un elemento: Usa un setter para modificar propiedades específicas:
setTodos(index, 'completed', status => !status);
-
Edición de contenido: Al editar el texto de un todo, emplea el setter para modificar directamente dentro del array proxy:
setTodos(index, 'text', newText);
¿Cómo se maneja la adición y eliminación de elementos?
Modificar una lista completa es costoso en términos de recursos. Los stores te permiten modificar elementos individuales directamente, lo que es más eficiente.
-
Añadir elementos: Añade un nuevo elemento al final del array sin necesidad de recrear el array entero:
setTodos(todos.length, { text: newItem, completed: false });
-
Eliminar elementos: Usa métodos como
filter
para manejar la eliminación simplificando el código y mejorando el rendimiento:setTodos(todos => todos.filter((_, idx) => idx !== indexToRemove));
¿Qué beneficios ofrece el uso de stores?
- Optimización del rendimiento: Solid optimiza las actualizaciones de interfaz mediante memoización interna y no requiere que actualices toda la lista al modificar un único elemento.
- Simplicidad y ergonomía: Trabajar con un modelo de datos más directo y natural facilita tanto la escritura como la lectura del código.
- Ahorro de recursos: Reduce el uso de memoria y ciclos de procesamiento incrementando la eficiencia de la aplicación.
Dicho todo esto, los stores nos proporcionan una herramienta poderosa para manejar datos complejos, mejorando significativamente la reactividad y optimización en nuestras aplicaciones Solid. Si bien puede requerir un cambio de mentalidad en comparación con el uso de signals, los beneficios en rendimiento y claridad del código son notables.
Continúa explorando esta emocionante tecnología y sigue aprendiendo para perfeccionar tus habilidades de desarrollo en Solid.