I am a newbie to React.js. I have a question about useEffect today. I know that if I pass an empty [] as a second parameter, useEffect only runs once. But, my app runs too often and if I console.log(something), I can see that. Here is my code. Please look at line 19. [] is there. I tried to add quizzes in [] like [quizzes].
import { useEffect, useState } from 'react'; import { doc, collection, onSnapshot } from 'firebase/firestore'; import db from '../firebaseConfig'; const Quiz = () => { const [quizes, setQuizes] = useState([]); useEffect(() => { const collectionRef = collection(db, 'quizes'); const unsub = onSnapshot( collectionRef, snapshot => { setQuizes( snapshot.docs.map( doc => ({ ...doc.data(), id: doc.id }) ) ); }, [] ); return unsub; // getData(): run once // onSnapshot(): listen for realtime updates }); console.log(quizes) return ( <div className='quiz'> {quizes.map(quiz => ( <div key={quiz.id} className='quiz'> {quiz.correctAns} </div> ))} </div> ); }; export default Quiz;