Как исправить ошибку «Недопустимый вызов крючка. Крючки могут вызываться только внутри тела компонента функции». в следующем js

#javascript #next.js

#язык JavaScript #next.js

Вопрос:

Я хочу извлечь данные из своих данных из базы данных firebase с помощью крючка uesEffect, но он выдает сообщение об ошибке: Недопустимый вызов крючка. Крючки могут вызываться только внутри тела функционального компонента. Как я могу это исправить, любой совет.Заранее спасибо. Мой код здесь

 useEffect(()=gt;{  console.log("session",session)  },[session]);    const [myChats]=useCollection(db.collection('chats').where('users','array-contains',session.user.email));    useEffect(()=gt;{  myChats?.docs?.map((user)=gt;{  setMyChat((prevState)=gt;[...prevState,user.id])  useCollection(db.collection('chats').doc(id).collection('messeges').orderBy('timestamp','asc').limitToLast(1)).then(function(chat){  console.log("chat",chat.id);  setChats((prev)=gt;[...prev,chat]);  })  })  },[myChats]);    // useEffect(()=gt;{  // chats?.map((chat,i)=gt;{  //   // console.log("id",chat.id);  // console.log("photo",chat.data().photoURL);  // console.log("email",chat.data().user);  // console.log("chat",chat.data().message)  // })  // },[myChats])  console.log("myChat",chats)          

Комментарии:

1. Вы вызываете useCollection внутри a useEffect , крючки должны вызываться только на верхнем уровне компонента, и одни и те же крючки должны вызываться в каждом цикле рендеринга (без условных крючков или, в вашем случае, крючок внутри другого крючка, который не всегда будет выполняться).

2. Ваш код неполон. Пожалуйста, предоставьте весь код.

3. @marioG8 полный код не публикуется

4. @pilchard должен ли я использовать ссылку на бд