当我进入FormPage时,我调用这个customHook来获取我可能在表单调查中上传的图像的路径。但是在一开始我得到'image/event/NaN',几毫秒后它变成了'image/event/5'
import { ref, listAll } from "firebase/storage";
import { FirebaseStorage } from "../firebase/config";
import { useEffect, useState } from "react";
export const useGetLastFolder = (postType) => {
const [folderPath, setFolderPath] = useState([]);
const listRef = ref(FirebaseStorage, `image/${postType}`);
useEffect(() => {
listAll(listRef)
.then((res) => {
const arrayFolders = res.prefixes.map((folderRef) => {
return folderRef.name;
})
const lastFolder = (parseInt(arrayFolders[arrayFolders.length - 1]) + 1).toString();
setFolderPath(`image/${postType}/${lastFolder}`);
})
.catch((error) => {
// Uh-oh, an error occurred!
});
}, [])
return {
lastPossibleFolderPath: folderPath
}
}
我测试了putting as initialState '[4]',我得到了'image/event/5',它工作得很好。
因此setFolders设置undefined(?)第一次渲染,然后设置文件夹数组。
1条答案
按热度按时间oxiaedzo1#
在您当前的代码中,文件夹被初始化为
[]
,其长度为0。这意味着您正在尝试访问以下行的文件夹[-1]这是未定义的,
parseInt
将返回NaN
。你得处理这个案子。或者任何适合您的情况的默认值。