Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

104
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda