【发布时间】:2021-08-05 11:37:16
【问题描述】:
我正在用 React 构建一个电影应用来练习。
首页有一个大横幅,上面有电影海报和电影信息,这个横幅的内容每5秒变化一次。我为此创建了这个函数:
const [movie, setMovie] = useState(''); //const movie returns object of one random movie
useEffect(() => {
async function fetchData() {
const request = await axios.get(requests.fetchNetflixOriginals);
setMovie(
request.data.results[
Math.floor(Math.random() * request.data.results.length)
]
);
}
const interval = setInterval(() => {
fetchData();
}, 5000)
return () => clearInterval(interval)
}, [movie]);
这个解决方案有一个问题:我第一次运行这个应用程序有5秒的延迟(由setInterval引起)。
所以我的问题是,是否有任何解决方案可以得到相同的行为,而且一开始就没有延迟?
我尝试了很多不同的解决方案,包括定义新状态,但所有这些都会导致错误或无限循环。
谢谢!
【问题讨论】:
标签: javascript reactjs react-hooks setinterval use-effect