#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
внутри auseEffect
, крючки должны вызываться только на верхнем уровне компонента, и одни и те же крючки должны вызываться в каждом цикле рендеринга (без условных крючков или, в вашем случае, крючок внутри другого крючка, который не всегда будет выполняться).2. Ваш код неполон. Пожалуйста, предоставьте весь код.
3. @marioG8 полный код не публикуется
4. @pilchard должен ли я использовать ссылку на бд