
[英]Firebase: Cannot read properties of undefined (reading 'indexOf')
[英]Next.js: Cannot read properties of undefined (reading 'indexOf')
下面的代码最初可以工作,但是一旦我重新加载页面,我就会得到TypeError: Cannot read properties of undefined (reading 'indexOf')
。
const [folders, setFolders] = useState([]);
const [user] = useAuthState(auth);
const folderColRef = collection(db, "UsersData", user?.uid, "Folders");
useEffect(() => {
const getFolders = async () => {
const userData = await getDocs(folderColRef);
setFolders(userData.docs.map((doc) => ({ ...doc.data(), id: doc.id })));
};
getFolders();
}, []);
这通常意味着您将undefined
传递给collection
函数,这是不允许的。 在您的代码中,这意味着user
是null
,这实际上是页面首次加载时的正常行为(因为恢复用户的身份验证 state 需要异步调用服务器)。
我的猜测是,您需要使效果取决于用户变量,然后在其中处理null
/ undefined
:
const [user] = useAuthState(auth);
useEffect(() => {
if (!user) return; // 👈 Add this line
const folderColRef = collection(db, "UsersData", user!.uid, "Folders"); // 👈 Move this line
const getFolders = async () => {
const userData = await getDocs(folderColRef);
setFolders(userData.docs.map((doc) => ({ ...doc.data(), id: doc.id })));
};
getFolders();
}, [user]); // 👈 Add a dependency here
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.