Bagaimana untuk memulakan cangkuk dengan data yang hanya boleh diakses selepas dipasang?
P粉801904089
P粉801904089 2024-02-17 22:35:42
0
1
409

Berikut ialah contoh perkara yang saya cuba lakukan:

import { useRouter } from "next/router";

import { useCollection } from "react-firebase-hooks/firestore";
import { db } from "@/firebase/clientApp";
import { collection } from "firebase/firestore";

export default function Test(){
    const router = useRouter();
    const {id} = router.query
    const [data, dataLoading, dataError] = useCollection(collection(db, "drafts", id), {})

    return(
    <div>Hello!</div>
    )
}

Seperti yang anda lihat, saya menggunakan nilai id untuk memulakan cangkuk useCollection. Walau bagaimanapun, id berubah dan mula-mula tidak ditentukan dan kemudian berubah kepada nilai yang betul. Ini menjadikan semuanya rosak dan perkara di atas tidak berfungsi dalam skrip taip. Saya perlu memulakan cangkuk useCollection selepas menentukan id, yang hanya selepas komponen "dipasang". Saya cuba meletakkan useCollection(...) di dalam useEffect tetapi ia tidak berfungsi.

P粉801904089
P粉801904089

membalas semua(1)
P粉432930081

Memandangkan anda menggunakan nextjs, anda boleh memanfaatkan getServerSideProps untuk menjana id bagi komponen anda sebagai prop awal supaya ia akan sentiasa ditakrifkan:

export async function getServerSideProps({ params }) {
  const id = params.id;

  return {
    props: {
      id,
    },
  };
}

dan anda menerimanya sebagai prop daripada komponen:

export default function Test({id}){
 //...
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan