React Native never[] array map返回null我该如何修复它?

von4xj4u  于 2023-06-24  发布在  React
关注(0)|答案(1)|浏览(119)

我创建了一个空的状态数组,然后从firebase推送数据。

  1. const [chats, setChats] = useState([]);

当我使用console.log(chats)函数时,它会正确地返回数组

  1. useEffect(() => {
  2. async function GetChats() {
  3. const data = chats;
  4. const querySnapshot = await getDocs(collection(db, "chat"));
  5. querySnapshot.forEach((doc) => {
  6. data.push({
  7. id: doc.id,
  8. data: doc.data(),
  9. });
  10. setChats(data);
  11. });
  12. }
  13. GetChats();
  14. }, []);
  15. console.log(chats)

控制台:
1.[{…}]
1.0:
1.data: {cinsiyet: 'erkek', memleket: 'rize', name: 'kutay akgün'}
1.id: "Kutay"

  1. [[Prototype]]: Object
    1.1:
    1.data: {memleket: 'Rize', name: 'Ali Aydın', cinsiyet: 'Erkek'}
    1.id: "Ali"
  2. [[Prototype]]: Object
    1.2:
    1.data: {cinsiyet: 'Kadın', name: 'Fatma Aydın', memleket: 'Rize'}
    1.id: "Fatma"
  3. [[Prototype]]: Object
    1.3:
    1.data: {cinsiyet: 'Erkek', memleket: 'Rize', name: 'Kutay Aydın'}
    1.id: "Kutay"
  4. [[Prototype]]: Object
    1.length: 4
  5. [[Prototype]]: Array(0)

目前为止没有问题

但是,当我尝试用map函数将数组渲染到组件时,它会返回注解。我也用return,但不管用。

  1. return (
  2. <SafeAreaView>
  3. <ScrollView>
  4. {
  5. chats.map((chat) => {
  6. return (
  7. <Text key={chat.id}>{chat.data.name}</Text>
  8. );
  9. })
  10. }
  11. </ScrollView>
  12. </SafeAreaView>
  13. );

聊天数组类型从来不是[]。为了解决这个问题,我手动添加了一个数据来定义数组的类型

  1. const [chats, setChats] = useState([{id: "Kutay",data:{cinsiyet: "erkek", memleket: "rize", name: "kutay akgün"}}]);

现在是这样的:

  1. const chats: {
  2. id: string;
  3. data: {
  4. cinsiyet: string;
  5. memleket: string;
  6. name: string;
  7. };
  8. }[]

这是真的
但是现在当我尝试渲染数组时。它只呈现我手动添加的第一个元素。
我如何才能使其他元素也呈现??

qc6wkl3g

qc6wkl3g1#

@昊武的评论解决了问题。

相关问题