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

177
Vistas
¿Cómo renderizar datos agregados con entradas de formulario?

Estoy representando información de la API, pero también necesito representar nueva información agregada con el formulario web. Hice este formulario para agregar información simple como el objeto de la API. ¿Cómo puedo representar aquí los datos agregados desde este formulario?

 function FormPage({ setData }) { const [name, setName] = useState(''); const [description, setDescription] = useState(''); const [id, setId] = useState(0); const handleSubmit = (e) => { e.preventDefault(); const book= { name, description, id} fetch('link-from-api', { method: 'POST', headers: { "Content-Type": "application/json" }, body: JSON.stringify(book) }).then(() => { console.log('new book added'); }) } return ( <> <form noValidate autoComplete="off" onSubmit={handleSubmit}> <TextField required value={name} onChange={(e) => setName(e.target.value)} label="Name" /> <TextField required value={description} onChange={(e) => setDescription(e.target.value)} label="Description" /> <button type="submit" onClick={handleId}> set</button> </form> </> ); } export default FormPage;

Cuando agrego un nuevo libro, necesito verlo en este documento:

 function BooksPage() { const [books, setBooks] = useState([]); useEffect(() => { fetch('link here') .then(res => { return res.json(); }) .then((data) => { setBooks(data) }) }, []) return ( <Container> <Header /> {books && <ListBooks props={books} />} </Container> ) }

¿Alguien puede ayudarme? Gracias por adelantado.

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

0

Necesitas usar el concepto llamado lifting the state up aquí.

Defina sus books de variables de estado en el componente principal común de estos dos componentes FormPage y BooksPage

Pase este método al componente FormPage.

 const addBook = (book) => { setBooks(b => [...b, book]) }

Llame a este método en

 const handleSubmit = (e) => { e.preventDefault(); const book= { name, description, id} fetch('link-from-api', { method: 'POST', headers: { "Content-Type": "application/json" }, body: JSON.stringify(book) }).then(() => { console.log('new book added'); addBook(book) }) }

Y pase books y setBooks a la página BooksPage.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede mover la búsqueda a una función separada y volver a llamar cuando finalice POST

 function BooksPage() { const [books, setBooks] = useState([]); function fetchBooks() { fetch('link here') .then(res => { return res.json(); }) .then((data) => { setBooks(data) }) } useEffect(() => { fetchBooks(); }, []) return ( <Container> <Header /> {books && <ListBooks props={books} />} <FormPage fetchBooks={fetchBooks} /> </Container> ) }

Y en tu forma:

 const handleSubmit = (e) => { e.preventDefault(); const book= { name, description, id} fetch('link-from-api', { method: 'POST', headers: { "Content-Type": "application/json" }, body: JSON.stringify(book) }).then(() => { console.log('new book added'); // fetch again fetchBooks(); }) }
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