Javascript 检索数据时重新呈现组件
当我从firebase获取数据时,请求仍在运行,并且数据仍在控制台中运行,我不知道为什么它没有停止 我使用了清理功能,中止控制器,但它不起作用 这是我的密码 我希望你能帮助我Javascript 检索数据时重新呈现组件,javascript,reactjs,react-native,Javascript,Reactjs,React Native,当我从firebase获取数据时,请求仍在运行,并且数据仍在控制台中运行,我不知道为什么它没有停止 我使用了清理功能,中止控制器,但它不起作用 这是我的密码 我希望你能帮助我 const [fetchedPhoto, setFetchedPhoto]= useState({ imagUrl:[] }) const retrieveImg= useCallback(async() => { try{ const url=[] const d
const [fetchedPhoto, setFetchedPhoto]= useState({
imagUrl:[]
})
const retrieveImg= useCallback(async() => {
try{
const url=[]
const data= await fetch('https://naif-65aa6.firebaseio.com/test-project.json',{signal:controller.signal})
const response= await data.json()
for(const key in response){
url.push({
id: key,
name: response[key].name,
phone: response[key].phone
})
}
setFetchedPhoto(prevState=>({
...prevState,
imagUrl: prevState.imagUrl.concat(url)
}))
console.log(fetchedPhoto.imagUrl);
} catch(err) {
console.log(err);
}
},[fetchedPhoto])
useEffect(()=>{
retrieveImg()
return()=>controller.abort()
},[fetchedPhoto])
期望的结果是什么?setState仍然一次又一次地添加获取的数据,如果获取的数据是一个包含3个索引的对象,它将复制为无限循环。传递dep list的方式基本上确保获得无限循环。那么告诉我们期望的行为是什么?我只想检索一次数据,当推送新数据时,函数会检索它,就像我添加一些东西时firebase realTimeDatabase会检索它一样,我希望你能理解我的意思,只需将一个空数组作为dep-list传递。期望的结果是什么?setState仍然会一次又一次地添加获取的数据,如果获取的数据是一个包含3个索引的对象,它会将其复制为无限循环。传递dep-list的方式基本上确保了获得无限循环。那么,告诉我们期望的行为是什么?我只想检索一次数据,当推送新数据时,函数检索它,就像firebase realTimeDatabase,当我添加一些东西时,它将检索它,我希望您理解我的意思,只需将空数组作为dep列表传递。