Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

108
Views
Después de que el objeto Promise no se represente

He estado tratando de mostrar el mapa de una matriz después de resolver su promesa. Desafortunadamente, no se está procesando. Aquí está el código:

 <View> {array.map((item) => { promiseFunction(item).then((res) => { return ( <FunctionalComponent prop={res.prop} /> ); }); })} </View>
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

No puede hacer eso directamente como lo está intentando, ya que React intentará generar una serie de promesas y, cuando se hayan resuelto, es demasiado tarde, el Componente ya se ha procesado. Las respuestas anteriores le mostraron cómo configurar para indicar los resultados una vez que llegan y se procesan solo después de que se cumplen las promesas. Pero con React@18 podrías saltar ese paso y representar las promesas casi directamente. Si está utilizando Suspense, hay una manera de manejar este tipo de escenarios, porque los componentes suspendidos pueden consumir promesas directamente y generar una reserva hasta que se resuelvan:

 const arr = [1, 2, 3, 4, 5]; export default function App() { return ( <Suspense fallback={<p>Loading.....</p>}> <AsyncComponent /> </Suspense> ); } export const AsyncComponent = () => { // THIS IS AN ARRAY OF PROMISES const data = arr.map((el, i) => { const d = useGetData(`https://jsonplaceholder.typicode.com/todos/${i + 1}`); console.log(d); return ( <h5> {i + 1}:{d?.title} </h5> ); }); // HERE YOU RENDER THE PROMISES DIRECTLY return <div>{data}</div>; };

Una demo con la que puedes jugar, AQUÍ .

about 4 years ago · Juan Pablo Isaza Report

0

Array.prototype.map() no esperará a que se resuelva Promise, por lo que los datos nunca se procesarán. Deberías probar el clásico para... de.

 const Foo = ({}) => { const [components, setComponents] = useState([]) useEffect(() => { (async () => { for (const item of array) { setComponents([...conponents, <FunctionalComponent prop={(await promiseFunction(item)).prop}/>]) } })() } return ( <View> {components} </View> ) }
about 4 years ago · Juan Pablo Isaza Report

0

Debe separar la función asíncrona de la representación. Y tienes que hacer el array.map correctamente. La lista de props de FunctionalComponent debe ser un estado.

 const [propsArray, setPropsArray] = useState([]) useEffect(() => { // or any other function, that will feed data array.map(item => { promiseFunction(item).then(res => { setPropsArray(p => [...p, res]) } }, []) return (<View> {propsArray.map(c => (<FunctionalComponent prop={c.prop} />) } </View>)
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!