无法解构“_ref”的属性“聊天”,因为它是未定义的(火力基地和反应)

万岁4

我有这段代码可以运行以从 firebase 集合中获取数据:

useEffect(() => {
db.collection("chatLists")
.onSnapshot((snapshot) => {
  if(snapshot) {
    let chattingLists = snapshot.docs.map((doc) => {
      if(doc.data().users.includes(user.email)) {
        return {
          chat: doc.data(),
          id: doc.id
        };
      }
    })
    if(chattingLists !== [undefined]) {
      setChatLists(chattingLists ? chattingLists : []);
    }
  }
})}, []);

基本上我正在获取集合'chatLists'的所有文档,并查看一个名为“users”的数组是否包含两个用户,如果他们这样做了,我会将它们全部返回并输入所有过滤后的文档在 chattingLists 变量中。然后我将它设置为 useState 然后我尝试映射所有这些:

return (
<div>
  <button onClick={addChat}>
    Add a chat
  </button>
  <>
    {chatLists !== undefined && chatLists.map(({chat, id}) => (
      <p>{id}</p> {/*Anything that i try to get from the chat or id doesn't work and i get error message*/}
    ))}
  </>
</div>

)

但是,我收到错误消息:“无法解构 '_ref' 的属性 'chat',因为它未定义。”

奇怪的是,在某些 chrome 用户中,它可以完美地按照我想要的方式运行,并且没有错误,但在其他一些用户中,我收到了上面的错误消息。

此外,chatLists 中的每个文档如下所示:在此处输入图像描述

达玛拉吉
  1. 您可以使用array-contains查询运算符而不是从集合中获取所有文档并手动过滤文档。这将为您节省大量阅读费用。

  2. 您必须从函数中返回一个值,map但当前当文档不包含给定的电子邮件时您什么也不返回,因此该数组中有未定义的项目。

尝试重构代码,如下所示:

useEffect(() => {
  db.collection("chatLists")
    .where("users", "array-contains", "user.email")
    .onSnapshot((querySnapshot) => {
      const chats = querySnapshot.docs.map((d) => ({
        id: d.id,
        chat: d.data(),
      }));
      setChatLists(chats);
    });
}, []);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TypeError:无法解构“ req.body”的属性“ userId”,因为它未定义

未处理的拒绝(TypeError):无法读取未定义的属性“ map”?(反应火力)

ReactJS。火力基地。TypeError:无法读取未定义的属性“ setState”

设置状态返回返回未定义,无法解构属性“标题”的“未定义”,因为它未定义

TypeError:无法解构“ this.props”的属性“凭证”,因为它未定义

电子JS-无法解构'require(...)。remote'的'BrowserWindow'属性,因为未定义

类组件抛出错误'TypeError:无法解构'this.State'的属性'timerTime',因为它是未定义的'

×TypeError:无法解构“ Object(...)(...)”的属性“ xxx”,因为未定义

未定义名称“ AuthException”。火力基地

无法解构“ this.props.data”的属性“聊天”,因为它未定义

TypeError:无法解构“ productDetails”的属性“ product”,因为未定义

未处理的拒绝(TypeError):无法解构“ Object(...)(...)”的属性“ setUser”,因为未定义

无法解构“未定义”的属性“历史”,因为它未定义。--React.js

Next.js useContext TypeError:无法解构'Object(...)(...)',因为它是未定义的

TypeError:无法解构“ item”的属性“ name”,因为它未定义

无法解构“(中间值)”的属性“数据”,因为它未定义

无法解构“未定义”的属性“纬度”

类型错误:无法解构“cart”的属性“cartItems”,因为它未定义

无法从上下文中解构对象的属性,因为它是未定义的

MERN - 类型错误:无法解构“req.body”的属性“username”,因为它未定义

类型错误:无法解构“Object(...)(...)”的属性“toDos”,因为它未定义

运行测试时,TypeError: 无法解构属性 'travelDatas' of '(0 , _GetTravelDatas.getTravelDatas)(...)' 因为它是未定义的

TypeError:无法解构“panelMembersList”的属性“error”,因为它未定义

获取错误无法解构属性,因为它是未定义的

React js无法解构属性,因为它未定义

未捕获的类型错误:无法解构“道具”的属性“食谱”,因为它未定义

未捕获的类型错误:无法解构“useAuth(...)”的属性“xxx”,因为它未定义

未捕获的类型错误:无法解构 'require(...).remote' 的属性 'dialog',因为它是未定义的,即使认为启用远程模块设置为 true

未捕获的类型错误:无法解构“aboutUsData”的属性“img”,因为它未定义。反应还原