Las vistas en las que el mismo elemento se repite varias veces, como una lista de tareas, unos comentarios o unas tarjetas de producto, se dibujan a partir de una lista de datos. En esta lección usarás rx.foreach para mostrar en pantalla una lista guardada en el State.
class ListState(rx.State):
items: list[str] = ["Apple", "Banana", "Cherry"]
def render_item(item: rx.Var[str]):
# Render a single item.
# Note that item here is a Var, not a str!
return rx.list.item(item)
def show_fruits():
return rx.list.unordered(
rx.foreach(ListState.items, render_item),
)localhost:3000
Vista previaA rx.foreach le pasas dos cosas:
ListState.itemsrender_item. Se pasa la función en sí, sin paréntesis.Reflex aplica render_item a cada elemento de la lista y crea un componente para cada uno. Si más adelante se añaden o quitan elementos de la lista, la lista de la pantalla también cambia. Lo comprobarás tú mismo con la cesta de frutas de la lección 6.
Fíjate en un detalle importante: el tipo del item que recibe render_item no es str, sino rx.Var[str].
render_item también es una función de la interfaz, así que se ejecuta una sola vez, al arrancar la app. En ese momento no se sabe qué habrá en la lista, de modo que item es una Var que apunta a "un valor que se rellenará más tarde".len(item). En su lugar, usas las operaciones de Var que Reflex ofrece para las Var: item.length() da el número de caracteres e item.upper(), el valor en mayúsculas. Esto también es el tema de la lección 4.Por la misma razón, una comprensión de listas de Python como [rx.list.item(i) for i in ListState.items] tampoco funciona. Para recorrer una lista del State, usa siempre rx.foreach.
items y comprueba que aparecen en pantalla.render_item para que devuelva rx.badge(item) en lugar de rx.list.item. Los mismos datos se dibujarán con otro aspecto.items al pulsar un botón. La solución está en la lección 6.rx.foreach.rx.foreach en lugar de una comprensión de listas.← Anterior
Lección 2 · Ahora lo ves: renderizado condicional
Siguiente →
Lección 4 · ¿Por qué no funciona if? Compilación vs. ejecución
Recibe avisos de nuevas lecciones
Te avisaremos por correo cuando este curso tenga lecciones nuevas o se abra un curso de continuación.
R
ReflexKR
Aprende Python y Reflex haciendo. Todos los ejemplos se ejecutaron y verificaron en Reflex 0.10.0.
ReflexKR es gratis y sin banners publicitarios. Si te ayudó, puedes apoyarlo con un café. ☕ Invítanos un café
Aviso de afiliados© 2026 ReflexKR · Since 2026 · CC BY-NC 4.0
Preguntas y respuestas
Pregunta lo que quieras sobre esta lección. Aquí se reúnen las preguntas de todas las versiones de idioma de esta página.