React中的流行

5m1hhzi4  于 2022-12-04  发布在  React
关注(0)|答案(1)|浏览(101)

这可能是一个愚蠢的问题,但是如果我使用prevState保存状态,我如何获取数据呢?我正在尝试从数据库中检索数据并通过导航发送该数据。

const [dataFromDatabase, setDataFromDatabase] = useState('');

    const retrieveFromDatabase = () => {
        db.transaction(
          tx => {
            tx.executeSql("SELECT * FROM PreLoveeedTable", 
              [], 
              (_, { rows }) => {     
                console.log("ROWS RETRIEVED");
 // clear data currently stored
                setDataFromDatabase('');
    
                let entries = rows._array;           
                entries.forEach((entry) => {
                  setDataFromDatabase(prev => prev + `${entry.id}, ${entry.image}, ${entry.title}, ${entry.price}, ${entry.description}\n
});
              },
              (_, result) => { 
                console.log('SELECT failed!');
                console.log(result);
              } 
            )
          }
        );
      }

{dataFromDatabase}将给予数据库中的所有数据。但希望数据库中有每个条目。例如标题的条目。我已经在这方面停留了一段时间,如果能得到提示,我将不胜感激。

toiithl6

toiithl61#

若要访问数据库中的各个条目,可以使用for循环遍历rows._array中的条目,并按索引访问每个条目。然后可以使用索引访问每个条目的各个属性。
例如:

const retrieveFromDatabase = () => {
    db.transaction(
        tx => {
            tx.executeSql("SELECT * FROM PreLoveeedTable", 
                [], 
                (_, { rows }) => {     
                    console.log("ROWS RETRIEVED");
                    // clear data currently stored
                    setDataFromDatabase('');

                    let entries = rows._array;
                    // Iterate over entries
                    for (let i = 0; i < entries.length; i++) {
                        let entry = entries[i];
                        // Use entry index to access individual properties
                        setDataFromDatabase(prev => prev + `${entry.title}\n`);
                    }
                },
                (_, result) => { 
                    console.log('SELECT failed!');
                    console.log(result);
                } 
            )
        }
    );
}

或者,您可以使用map方法来重复项目,并传回所需值的数组:

const retrieveFromDatabase = () => {
    db.transaction(
        tx => {
            tx.executeSql("SELECT * FROM PreLoveeedTable", 
                [], 
                (_, { rows }) => {     
                    console.log("ROWS RETRIEVED");
                    // clear data currently stored
                    setDataFromDatabase('');

                    let entries = rows._array;

相关问题