Reactjs Firestore的React钩子类型不正确
我有一个用于查询特定Firebase Firestore集合/文档的自定义钩子Reactjs Firestore的React钩子类型不正确,reactjs,typescript,google-cloud-firestore,react-hooks,Reactjs,Typescript,Google Cloud Firestore,React Hooks,我有一个用于查询特定Firebase Firestore集合/文档的自定义钩子 import { useContext, useEffect, useState } from 'react'; import { FirebaseContext } from 'providers/Firebase/FirebaseContextProvider'; const useFireStore = ( collection: string, doc: string, loadingDela
import { useContext, useEffect, useState } from 'react';
import { FirebaseContext } from 'providers/Firebase/FirebaseContextProvider';
const useFireStore = (
collection: string,
doc: string,
loadingDelay: number = 0,
) => {
const { firestore } = useContext(FirebaseContext);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
const [document, setDocument] = useState<
firebase.firestore.DocumentData | undefined
>();
useEffect(() => {
setLoading(true);
setDocument(undefined);
const docRef = firestore.collection(collection).doc(doc);
docRef
.get()
.then(doc => {
setDocument(doc.data());
setTimeout(() => {
setLoading(false);
}, loadingDelay);
})
.catch(e => {
setError(e);
setLoading(false);
});
}, [collection, loadingDelay, doc, firestore]);
return [document, loading, error];
};
export default useFireStore;
当我在钩子中的const[document,setDocument]=useState
中将鼠标悬停在document
上时,我看到document
类型将是:
const文档:firebase.firestore.DocumentData |未定义
但是,当我将鼠标移到组件中的const[details,loading,error]=…
中的document
上时,我看到可能的类型如下:
const详细信息:boolean | firebase.firestore.DocumentData | null |未定义
这可能是从哪里来的
boolean
或null
?我通过键入useFireStore
钩子的返回来解决这个问题,例如:
const useFireStore = (
collection: string,
doc: string,
loadingDelay: number = 0,
): [firebase.firestore.DocumentData | undefined, boolean, Error | null] => {
...
}
const useFireStore = (
collection: string,
doc: string,
loadingDelay: number = 0,
): [firebase.firestore.DocumentData | undefined, boolean, Error | null] => {
...
}