Rumah > Soal Jawab > teks badan
P粉8068340592023-08-25 12:43:07
Adalah lebih baik jika anda menggabungkan useEffect dan useState. useEffect bertanggungjawab untuk menetapkan dan melumpuhkan pendengar, dan useState hanya bertanggungjawab untuk data yang anda perlukan.
const [data, setData] = useState([]); useEffect(() => { const unsubscribe = someFirestoreAPICall().onSnapshot(snap => { const data = snap.docs.map(doc => doc.data()) this.setData(data) }); //记得在卸载组件时取消实时监听器,否则会造成内存泄漏 return () => unsubscribe() }, []);
Kemudian anda boleh terus merujuk "data" dalam cangkuk useState dalam aplikasi anda.
P粉1655228862023-08-25 12:37:51
Penggunaan mudahKesan berkesan untuk saya, saya tidak perlu mencipta fungsi pembantu atau apa-apa jenis,
useEffect(() => { const colRef = collection(db, "data") //real time update onSnapshot(colRef, (snapshot) => { snapshot.docs.forEach((doc) => { setTestData((prev) => [...prev, doc.data()]) // console.log("onsnapshot", doc.data()); }) }) }, [])
Penggunaan mudahKesan berkesan untuk saya, saya tidak perlu mencipta sebarang fungsi pembantu atau apa-apa seperti itu,
useEffect(() => { const colRef = collection(db, "data") //实时更新 onSnapshot(colRef, (snapshot) => { snapshot.docs.forEach((doc) => { setTestData((prev) => [...prev, doc.data()]) // console.log("onsnapshot", doc.data()); }) }) }, [])