【发布时间】:2021-03-03 10:46:41
【问题描述】:
我的订单列表有一个状态。在第一次更新时一切正常,但是当对数据库中的订单进行更新时,我的订单列表已更新,但即使使用 <...>
也不会触发重新渲染const [orders, setOrders] = useState([]);
useEffect(() => {
const unsubscribe = firebase.firestore()
.collection("Orders")
.orderBy("date", "desc")
.limit(parseInt(limit, 10))
.onSnapshot((snapshot) => {
let oldOrders = orders;
let addedOrders = []
snapshot.docChanges().forEach((change) => {
if (change.type === "added") {
addedOrders.push({ ...change.doc.data(), id: change.doc.id })
}
if (change.type === "modified") {
oldOrders[oldOrders.findIndex(x => x.id === change.doc.id)] = { ...change.doc.data(), id: change.doc.id }
}
if (change.type === "removed") {
oldOrders.splice(oldOrders.findIndex(x => x.id === change.doc.id))
}
});
if (addedOrders.length > 0) {
oldOrders.unshift(addedOrders)
}
setOrders(...oldOrders);
});
return () => {
unsubscribe()
}
}, [limit]);
【问题讨论】:
标签: javascript reactjs react-hooks state