代码
let allurl = []
const [toReadurl, setToReadurl] = useState([])
useEffect(() => {
const listRef = sRef(storage, paramKey)
// Find all the prefixes and items.
listAll(listRef)
.then((res) => {
res.prefixes.forEach((folderRef) => {
// All the prefixes under listRef.
// You may call listAll() recursively on them.
});
res.items.forEach((itemRef) => {
// All the items under listRef.
//console.log(itemRef)
getDownloadURL(itemRef).then((url =>{
//console.log(url)
allurl.push(url)
setToReadurl(allurl)
//console.log(toReadurl)
}))
});
}).catch((error) => {
// Uh-oh, an error occurred!
console.log(error)
});
}, [])
console.log(toReadurl)
如果将console.log(toReadurl)
放在useEffect()之外,则数组中只有2个元素
但是如果我把它放在函数和useEffect()中,数组中会有4个元素
为什么在useEffect()之后我的数组项减少了2?
我如何保存4个链接,以便我可以显示出来?
2条答案
按热度按时间icnyk63a1#
你可以使用
setToReadurl
的回调函数,你会收到最新的/先前的值,并且可以简单地返回一个包含先前值和新url
的新数组。这将允许您移除
allUrl
并仅使用状态,因为allUrl
值将在每次渲染时重置。qlfbtfca2#
验证码: