大佬教程收集整理的这篇文章主要介绍了第一次在 Firestore 中写入时重新渲染应用程序,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我遇到了一个问题,即我的应用程序在第一次写入时重新呈现 Firestore 数据。 问题是每当用户重新更新文档时,我的应用程序都会重新呈现,这会导致闪烁。但如果用户重新加载页面,问题将不再存在。
当用户第一次写入数据库时,调用这个函数:
function StartConvo(recipIEntID,message,convoID,recipIEntName) {
const user = firebase.auth().currentUser;
let convoinfo = {
convoID,creatorID: user.uID,creatorname: user.displayname,recipIEntID,recipIEntname,typerID: user.uID,userref: db.collection("users").doc(recipIEntID)
// usertyPing: false,};
let customizedconvo = {
theme: "https://i.imgur.com/4hzNTTq.png",emoji: "?"
};
let messages = {
message,reaction: "",msgdate: firebase.firestore.timestamp.Now(),msgid: db.collection("conversations").doc().ID,read: false,senderID: user.uID,sendername: user.displayname,ediTing: false
};
db.collection("users")
.doc(user.uID)
.update({
msgids: firebase.firestore.FIEldValue.arrayUnion(convoID),msgpersonIDs: firebase.firestore.FIEldValue.arrayUnion(recipIEntID)
});
db.collection("users")
.doc(recipIEntID)
.update({
msgids: firebase.firestore.FIEldValue.arrayUnion(convoID),msgpersonIDs: firebase.firestore.FIEldValue.arrayUnion(user.uID)
});
db.collection("conversations")
.doc(convoID)
.set({
convoinfo,messages: firebase.firestore.FIEldValue.arrayUnion(messages),customizedconvo,nickname1: '',nickname2: ''
});
}
从 firestore 获取数据时:
useEffect(()=>{
db.collection('users').doc(user.uID).onSnapshot(user=>{
const userList = user.data()
setUserList(userList)
db.collection('conversations').onSnapshot(snap=>{
let convos = []
snap.forEach(doc=>{
if(userList.msgids.includes(doc.ID)){
convos.push(doc.data())
}
})
setConvos(convos)
})
})
},[])
useEffect(() => {
db.collection("users")
.doc(user.uID)
.onSnapshot((user) => {
const userList = user.data();
setmsgpersonIDs(userList.msgpersonIDs);
setUserList(userList);
db.collection("conversations").onSnapshot((snap) => {
let convos = [];
snap.forEach((doC) => {
if (userList.msgids.includes(doc.ID)) convos.push(doc.data());
});
setConvoList(convos);
});
});
db.collection("users")
.where("uID","!=",user.uID)
.onSnapshot((snap) => {
const users = [];
snap.forEach((el) => {
users.push(el.data());
});
setAllusers(users);
});
db.collection('users').doc(user.uID).onSnapshot(snap=>{
const user = snap.data()
document.documentElement.style.setProperty(
'--theme-color',user.customization.themecolor
)
document.documentElement.style.setProperty(
'--chat-color',user.customization.chatcolor
)
})
setLoading(false);
},[]);
知道为什么我的应用在第一次编写文档时会“闪烁”吗?
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的第一次在 Firestore 中写入时重新渲染应用程序全部内容,希望文章能够帮你解决第一次在 Firestore 中写入时重新渲染应用程序所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。