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

210
Views
Usando la función asíncrona, espere y resuelva en el componente React

Tengo un componente con la siguiente estructura:

 const _dbCall = () => { const fooDb = SQLite.openDatabase(db); return new Promise(resolve => { fooDb.transaction(tx => { tx.executeSql(`SOME SQL`, [], (tx, results) => { resolve(results.rows._array); }, null); }); }) } async function _renderSomething() { const results = await _dbCall(); return <FlatList data={results} renderItem={_renderFunc} keyExtractor={item => item} /> }

Uso _renderSomething() en la función render() del Component . Sin embargo, esto me da:

Error: los objetos no son válidos como hijos de React (encontrado: objeto con claves {_U, _V, _W, _X}). Si tenía la intención de representar una colección de niños, use una matriz en su lugar.

Esta {_U, _V, _W, _X} me parece una promesa no resuelta. Cuando elimino la palabra clave async de renderSomething() , comento los const results = ... y paso algunos datos ficticios a <FlatList ... , se procesa sin problemas.

¿Por qué renderSomething() no devuelve <FlatList ... sino una promesa no resuelta?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Como señaló @Yousaf:

 const [resultsFromDb, setResultsFromDb] = useState([]); const _dbCall = () => { const foo = []; const fooDb = SQLite.openDatabase(db); fooDb.transaction(tx => { tx.executeSql(`SOME SQL`, [], (tx, results) => { // do something the results for (let i = 0; i < results.rows.length; i++) { foo.push(results.rows.item(i)); } setResultsFromDb(foo) }, null); }); } const _renderSomething = () => { const results = _dbCall(); return <FlatList data={resultsFromDb} renderItem={_renderFunc} keyExtractor={item => item} /> }
about 4 years ago · Juan Pablo Isaza Report

0

Puede usar el gancho useEffect .

 function _renderSomething() { const [data,setData] = React.useState([]) React.useEffect(()=>{ (async () => { const results = await _dbCall(); setData(results); })() }, []); return <FlatList data={data} renderItem={_renderFunc} keyExtractor={item => item} /> }
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!