程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了第一次在 Firestore 中写入时重新渲染应用程序大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决第一次在 Firestore 中写入时重新渲染应用程序?

开发过程中遇到第一次在 Firestore 中写入时重新渲染应用程序的问题如何解决?下面主要结合日常开发的经验,给出你关于第一次在 Firestore 中写入时重新渲染应用程序的解决方法建议,希望对你解决第一次在 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,请注明来意。
标签:第一次在