Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

94
Vistas
Agregar un div en React usando ganchos React

Estoy aprendiendo a reaccionar en este momento y actualmente estoy haciendo una aplicación de tareas pendientes para poder entender cómo reaccionar más fácilmente. Así que esto es lo que estoy tratando de hacer:

  • El usuario hace clic en un botón.
  • El clic activa un aviso que le pide al usuario el título de la tarea pendiente (único título en este momento)
  • Luego, ese título se agrega a una matriz de todos
  • Y luego, use esa matriz para mostrar cada tarea pendiente en la página

Código:

 const [check, setCheck] = useState(false); const [todo, setTodo] = useState([]); function handleClick() { let toAdd = prompt('Title: ') setTodo([...todo, { title: toAdd }]); } useEffect(()=> { if(todo.length !== 0) { setCheck(true); } }) return ( <div className="wholeContainer"> <div className="tododiv"> <span className="todos">Todos: </span> <hr/> { check ? todo.forEach((eachTodo)=> { <TodoItems title={eachTodo}/> }) : <span>Nothing</span> } </div> <button className="add" onClick={handleClick}> <i className="fas fa-plus"></i> Add a Todo </button> </div> );

La const [check, setCheck] = useState(false); está escrito para que pueda acceder a la matriz if todo.length !== 0 ;

El problema viene en la parte de renderizado. No puedo encontrar una manera de mostrar todas y cada una de las tareas pendientes en su propio <TodoItems/> , y también cuando uso forEach() , no sucede nada porque creo que alguien me dijo que setState() funciona de forma asíncrona. ¡De verdad necesito algún consejo!

Gracias...

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Tu estas usando

 todo.forEach((eachTodo)=> { <TodoItems title={eachTodo}/> })

Cuándo deberías estar usando

 todo.map((eachTodo)=> { return <TodoItems title={eachTodo}/> })

O

 todo.map((eachTodo)=> ( <TodoItems title={eachTodo}/> ))

También tienes un bucle infinito en tu componente:

 useEffect(()=> { if(todo.length !== 0) { setCheck(true); } })

Cada vez que el componente se actualiza, cuando la lista de tareas pendientes no está vacía, establece Check en verdadero, lo que desencadena un nuevo procesamiento. Además, no necesita usar el estado para cada variable, solo las que fueron un cambio deberían activar una nueva representación.

Además, su nuevo estado de lista de tareas pendientes depende del estado anterior, por lo que debe usar una actualización funcional.

https://reactjs.org/docs/hooks-reference.html

 const [todoList, setTodoList] = useState([]); function handleClick() { let toAdd = prompt('Title: '); setTodoList((prevTodoList) => [...prevTodoList, toAdd]); } const isTodoListEmpty = todoList.length === 0 return ( <div className="wholeContainer"> <div className="tododiv"> <span className="todos">Todos: </span> <hr /> {!isTodoListEmpty ? ( todoList.forEach((todoItem) => { <TodoItems title={todoItem} />; }) ) : ( <span>Nothing</span> )} </div> <button className="add" onClick={handleClick}> <i className="fas fa-plus"></i> Add a Todo </button> </div> );
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda