mvk*_*oiw 1 javascript firebase reactjs google-cloud-firestore
为了显示加载进度,我试图在初始获取时将 onSnapshot 调用包装在一个 promise 中。数据加载正确,但实时更新无法正常运行。
有没有办法使用 onSnapshot 方法实现这种类型的功能?
这是我的初始数据抓取。在实现承诺包装器之前,实时更新功能正常:
const [heroesArr, setHeroesArr] = useState([]);
const db = firebase.firestore();
const dbError = firebase.firestore.FirestoreError;
useEffect(() => {
const promise = new Promise((resolve, reject) => {
db.collection("characterOptions")
.orderBy("votes", "desc")
.onSnapshot(coll => {
const newHeroes = [];
coll.forEach(doc => {
const {
name,
votes
} = doc.data();
newHeroes.push({
key: doc.id,
name,
votes
});
});
if(dbError) {
reject(dbError.message)
} else {
resolve(newHeroes);
}
});
});
promise
.then(result => {
setHeroesArr(result);
})
.catch(err => {
alert(err);
});
}, [db]);
Run Code Online (Sandbox Code Playgroud)
同样,数据正在加载到 DOM,但实时更新无法正常运行。
归档时间: |
|
查看次数: |
8644 次 |
最近记录: |