No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

0 Días
1 Hrs
4 Min
24 Seg
Curso de SolidJS

Curso de SolidJS

Samuel Burbano

Samuel Burbano

Reactividad en Listas

18/27
Recursos

¿Cómo optimizar el renderizado de listas en Solid?

Optimizar el renderizado de listas en Solid es esencial para mejorar el rendimiento de nuestras aplicaciones. Solid nos ofrece diversas herramientas y técnicas para lograrlo, aprovechando su sistema de reactividad. La clave está en comprender cómo funciona la reactividad al interactuar con listas, así como en implementar señales derivadas para mantener datos actualizados de manera eficiente.

¿Qué es una señal derivada?

Una señal derivada es una manera de seguir la pista de ciertos valores en una lista que cambian en función de señales reactivas. Por ejemplo, si queremos llevar la cuenta de los elementos completados en una lista de tareas, podemos crear una señal derivada llamada completedCount. Esta señal calculará en tiempo real el número de elementos completados filtrando la lista original y obteniendo la cantidad de elementos que cumplen con la condición de estar completados.

const completedCount = () => todos().filter(todo => todo.completed).length;

¿Por qué usar createMemo?

El uso de createMemo es crucial para prevenir renders innecesarios. Esta función permite memorizar valores y solo recalcularlos cuando realmente cambia la entrada asociada. Sin esto, cualquier cambio en la lista podría desencadenar recálculos incluso si los valores no cambian esencialmente. Al encapsular cálculos dentro de createMemo, aseguramos que nuestras funciones dependan de comparaciones eficientes de valores nuevos contra anteriores, mejorando el rendimiento al evitar cálculos redundantes.

import { createMemo } from 'solid-js';

const memoizedCompletedCount = createMemo(() => {
  return todos().filter(todo => todo.completed).length;
});

¿Cómo refactorizar código para mejorar la legibilidad?

La creación de código legible y mantenible es fundamental. Los signals en Solid facilitan asociar estados interactivos de manera más eficiente. Al integrar signals dentro de los elementos de la lista, podemos evitar manipulaciones engorrosas y propensas a errores.

Reemplazar datos planos por signals

En vez de operar con valores planos, podemos asociar cada ítem de nuestra lista con signals específicos. Esto no solo simplifica el seguimiento del estado de cada elemento, sino que también favorece la mantenibilidad del código. Al actualizar propiedades, se logra un código menos repetitivo y más claro.

const addItem = newItem => {
  const [text, setText] = createSignal(newItem);
  const [completed, setCompleted] = createSignal(false);

  todos.push({
    text,
    setText,
    completed,
    setCompleted
  });
};

Modificar eventos de manera eficiente

La gestión de cambios en los elementos de la lista, como activar o desactivar un checkbox, puede simplificarse utilizando directamente los métodos de asignación de cada signal individual. Por ejemplo, al cambiar el estado de un checkbox, podemos hacer un toggle del estado completed sin necesidad de manipular toda la lista.

const handleCheckboxChange = index => {
  todos[index].setCompleted(!todos[index].completed());
};

¿Cómo manejar listas vacías?

Mostrar un mensaje adecuado cuando la lista está vacía mejora la experiencia del usuario. Solid permite usar la propiedad fallback en el componente For, para presentar mensajes cuando no hay elementos en la lista.

<For each={todos()} fallback={<div>No hay elementos en la lista</div>}>
  {todo => <TodoItem todo={todo} />}
</For>

Adoptar estas prácticas no solo optimiza el renderizado de las listas, sino que también facilita el mantenimiento del código en el tiempo. Las técnicas discutidas fomentan un desarrollo más limpio y con mejor rendimiento, especialmente cuando las aplicaciones escalan en complejidad. Mantente curioso y sigue explorando todas las capacidades de Solid para desarrollar aplicaciones de alta eficiencia.

Aportes 0

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?