问题描述
我的一个 React 组件中有这个 useEffect。
const [photo,setPhoto]=useState();
useEffect(()=>{
console.log("inside photo useEffect")
setIsLoading(true);
fetch("/uploadPhoto",{
method:"post",body:photo
})
.then(res=>res.json())
.then(data=>{
setPhotoURL(data.secure_url);
setIsLoading(false)
})
.catch(err=>{
console.log(err);
})
},[photo])
我只想在“photo”的值改变时触发这个useEffect。但是每当页面重新加载时它就会被触发。
如何实现这一目标?
解决方法
我找到了一种方法来做到这一点。 似乎 useEffect 默认在每个渲染上执行,而与依赖无关。我们使用依赖项作为第二个参数来定义何时应该再次执行 useEffect。
我像这样更改了我的代码并且它起作用了。
useEffect(()=>{
if(photo){
console.log("inside photo useeffect")
setIsLoading(true);
fetch("/uploadPhoto",{
method:"post",body:photo
})
.then(res=>res.json())
.then(data=>{
setPhotoURL(data.secure_url);
setIsLoading(false)
})
.catch(err=>{
console.log(err);
})
}
},[photo])
仅当“photo”有值时才会执行。