我试图调用我的数据库,然后将数据放入一个状态。 我尝试了许多不同的方式,并且总是得到这种响应:
Promise {
"_40": 0,
"_55": null,
"_65": 0,
"_72": null,
}
这是我的函数:
function getEspaces() {
return new Promise((resolve) => {
db.transaction(tx => {
tx.executeSql(
`SELECT * FROM Espace`, [], (tx, results) => {
let espaces: Espace[] = [];
for (let cpt = 0; cpt < results.rows.length; cpt++) {
const item = results.rows.item(cpt)
const espace: Espace = {
name: item.name,
id_espace: item.id_espace
}
espaces.push(espace);
}
console.log("Get espaces");
resolve(espaces);
});
});
});
}
这是我从另一个组件中调用它的地方:
const [espaces] = useState(getEspaces());
我该如何解决? 我无法在setState中等待。
预先感谢
答案 0 :(得分:3)
您可以首先将espaces
状态设置为空数组,然后使用useEffect
钩子来获取数据并在解析时设置状态:
const [espaces, setEspaces] = useState([])
useEffect(() => {
getEspaces().then(data => setEspaces(data))
}, [])
我希望这会有所帮助。