我在 firebase 實時保存訂單資料,但我保存在陣列物件中的按鍵與我作為按鍵獲得的不同
function confirmOrder() {
let array = []
const Oid = firebase.app().database(DATABASE_URL).ref('/Order/').push();
array.push({
total: getTotal(),
oid: Oid.key,
totalItems: cartItems.length
})
for (let index = 0; index < cartItems.length; index ) {
var key = `item${index 1}`;
var obj = {};
obj[key] = cartItems[index].qty ' ' cartItems[index].name ' Rs.' cartItems[index].price;
array.push(obj)
}
setOrder(Object.assign(...array))
firebase.app().database(DATABASE_URL).ref('/Order/' Oid.key).set(order);
}

uj5u.com熱心網友回復:
我不確定這是問題的原因,但你可以試試最后一行的這個(較短的)版本嗎?
Oid.set(order);
更新:setState方法和useState鉤子異步更新狀態,所以order不會在下一行更新。
您可以等待訂單完成,也可以簡單地array用作值:
Oid.set(Object.assign(...array));
另見:
- useState 是同步的嗎?
- useState 設定方法不會立即反映更改
- 使用 useState 后控制臺記錄狀態不回傳當前值
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/431319.html
標籤:javascript 反应 反应式 firebase-实时数据库
上一篇:如何將陣列發布到Strapi
