我正在处理一个发出api请求的项目,但是我的请求被调用了4次,为什么会发生这种情况?
const [movies, setMovies] = useState([]);
const [searchTerm, setSearchTerm] = useState('')
useEffect(() => {
getMovies(FEATURED_API)
if (searchTerm) {
getMovies(SEARCH_API + searchTerm);
} else{
getMovies(FEATURED_API)
}
}, [searchTerm])
const getMovies = (API) => {
fetch(API)
.then((res) => res.json())
.then((data) => {
console.log(data)
setMovies(data.results)
})
}
const handleOnChange = (e) => {
setSearchTerm(e.target.value)
}```发布于 2022-06-28 02:59:57
在您的代码中,您正在挂载上两次调用getMovies(FEATURED_API) (一次在if原因之外,另一次在其他原因中)。
useEffect(() => {
getMovies(FEATURED_API) // first call
if (searchTerm) {
getMovies(SEARCH_API + searchTerm);
} else{
getMovies(FEATURED_API) // second call because searchTerm is an empty string
}
}, [searchTerm])另外两个调用可能是因为您启用了StrictMode (它是默认的create-react-app),而且您没有注意到它。StrictMode在开发模式下两次安装组件,以帮助您更轻松地检测代码中的问题。
您可以使用一个更具有描述性的概念来检查this post comment,即StrictMode所做的事情。
https://stackoverflow.com/questions/72779763
复制相似问题