我正在尝试克隆 netflix,当我将鼠标悬停在电影图像上时,会出现该电影的预告片,当我将鼠标悬停在控制台中有许多相同的输出时,就会出现问题。我认为这个问题是因为我在地图内渲染,但我正在寻找避免这种情况的性能......我尝试使用 React.memo 但不起作用。
这是一个例子
我有一个父组件
function MovieList(props) {
...
<Movies movies={netflixMovies} title="Movie Feature" />
}
在子组件内部,我有以下内容
function Movie(props) {
...
const showMiniVideo = (id) => {
setTimeout(() => {
fetchYoutubeVideo(id) // Function who give me the ID of youtube video
.then(res => {
if (res.results.length === 0) { // If doesn't exist a video i set existVideo false
setExistVideo(false)
return setIdYoutubeVideo() // IdYoutubeVideo none
}
else {
setExistVideo(true) // If exist a video i set existVideo true
res.results.map(thriler => {
return setIdYoutubeVideo(thriler.key) // IdYoutubeVideo id
})
}
})
.catch(err => {
setExistVideo(false)
console.error(err)
return setIdYoutubeVideo()
});
}, 1000);
}
...
return (
{movies.map(movie => (
<div key={movie.id} className="tile">
<div onMouseOver={() => showMiniVideo(movie.id)} onMouseOut={stopMiniVideo}>
{idYoutubeVideo ?
(idMovie === movie.id ?
(existVideo ?
console.log("hay video")
:
console.log("no hay video")
)
:
console.log("no es el id")
)
:
<svg style={{ color: 'white' }} width="1.5vw" height="1.5vw" viewBox="0 0 16 16" className="bi bi-play-fill" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path d="M11.596 8.697l-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z" />
</svg>
}
</div>
</div>
</div>
))}
)}
有人有想法吗?我将不胜感激任何帮助