下面是我正在尝试做的一个例子:
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>
)
}
正如你所看到的,我使用id的值来初始化useCollection钩子。然而,id会改变,并且首先是未定义的,然后改变为正确的值。这使得整个事情中断,并且以上甚至在typescript中是无效的。我需要在定义id之后初始化useCollection钩子。这只是在组件“挂载”之后。我尝试将usecollection(...)放置在useEffect中,但它不起作用。
1条答案
按热度按时间fiei3ece1#
因为你使用的是nextjs,所以你可以利用
getServerSideProps
来为你的组件生成id作为初始的props,这样它就总是被定义的:然后你从你的组件中得到它作为 prop