我在useEffect中创建了一个名为func的异步函数。 当从firestore收到数据时,"urlsdata "数据被setUrl保存。之后,如果useState中包含的url中有数据,我就隐藏SplashScreen,并将renderbool改为true。 然而,当useEffect在应用第一次渲染时被执行,由于某些原因,它被执行了两次,所以api总共被执行了两次。我认为这是非常不必要的,所以下面的代码只在renderbool为假时执行。
但是当renderbool为false时,它仍然被执行两次。我怎样才能使func只运行一次?
请注意,url和renderbool是必须的。
这是我的代码
const [url, setUrl] = useState('');
const [renderbool, setRenderbool] = useState(false);
useEffect(() => {
const func = async () => {
if(!renderbool) {
const urlsdata= await storage().ref('/main.jpg').getDownloadURL();
setUrl(urlsdata);
if(url) {
SplashScreen.hide();
setRenderbool(true);
}
}
}
func();
},[url, renderbool]);