function Chat() {
const [input, setInput] = useState("")
const [seed, setSeed] = useState("")
const {personid} = useParams()
const [personname, setPersonname] = useState("")
const [messages, setMessages] = useState([])
const [{user}, dispatch] = useStateValue()
useEffect(() => {
if (personid) {
db.collection("people")
.doc(personid)
.onSnapshot((snapshot) =>
setPersonname(snapshot.data().name));
db.collection("people")
.doc(personid)
.collection("messages")
.orderBy("timestamp", "asc")
.onSnapshot((snapshot) =>
setMessages(snapshot.docs.map(doc =>doc.data()))
)
}
}, [personid])
useEffect(() => {
setSeed(Math.floor(Math.random()*1000))
}, [personid])
const sendmessage = (e) => {
e.preventDefault()
console.log("The input is ", input);
db.collection("people").doc(personid).collection("messages").add({
message: input,
name: user.displayName,
timestamp: firebase.firestore.FieldValue.serverTimestamp(),
})
setInput("")
}
当我尝试运行该函数时,出现了下面图片中的错误。我已经尝试使用谷歌云firestore的时间戳作为替代方案,但我不知道问题出在哪里。
addDoc
的代码。但我猜测当您调用.doc(personid)
时,在第48行时,也许personid
是未定义的?检查该值以及该方法的文档,以查看您是否正确使用该方法。 - Lucasuser.displayName
上。谢谢。 - Priyadarsh S S