You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Netflix克隆页面刷新后内容闪现并触发Map错误排查

React useEffect开发Netflix克隆项目页面刷新后内容消失并出现Map错误的原因分析

我用ReactJS结合useEffect钩子开发Netflix克隆项目,当前代码能输出基础的Netflix影片名称与图片,但页面刷新后内容仅显示一秒,控制台随即出现Map相关错误,代码看起来没异常,请问错误原因是什么?


相关代码

Row.js:

function Row({ fetchUrl, title }) {
  const baseURL = "https://image.tmdb.org/t/p/original/"
  const [movies, setMovies] = useState([])

  useEffect(() => {
    async function fetchData() {
      const request = await axios.get(fetchUrl)
      setMovies(request.data.results)
      return request
    }
    fetchData()
  }, [fetchUrl])

  return (
    <div className="row">
      <h2> {title} </h2>
      {movies.map((movie) => (
        <img src={`${baseURL}${movie.poster_path}`} alt={movie.name} />
      ))}
    </div>
  )
}

requests.js:

const API_KEY = "ecfc81ae98ad1c0720b07e83400de828"

const requests = {
  fetchTrending: `/trending/all/week?api_key=${API_KEY}&language=en-US`,
  fetchNetflixOriginals: `discover/tv?api_key=${API_KEY}&with_networks=213`
}

axios.js:

const instance = axios.create({
    baseURL : "https://api.themoviedb.org/3",
});

app.js:

function App() {
  return (
    <div ClassName="App">
      <h1> Hey !! lets build Netflix</h1>
      <Row title="Netflix Originals" fetchUrl={requests.netflixOriginals} />
      <Row title="Trending" fetchUrl={requests.fetchTrending} />
    </div>
  )
}

错误截图

错误截图


错误原因分析

  • props键名拼写错误:App.js中第一个Row组件传入的fetchUrl={requests.netflixOriginals}是错误的,requests对象里对应的键是fetchNetflixOriginals,不是netflixOriginals。这会导致该Row的fetchUrl为undefined,axios请求失败后,setMovies可能被设置为非数组值(比如undefined),后续调用movies.map时就会抛出“Cannot read properties of undefined (reading 'map')”的错误。
  • axios实例未正确使用:Row.js中直接使用了axios.get,但你在axios.js里创建了自定义的axios实例instance,应该导入这个实例并使用instance.get,否则请求的baseURL不匹配,会导致API请求失败,返回错误数据,使得movies状态变为非数组,触发map报错。
  • 缺乏错误处理与边界判断:即使请求正常,也可能存在返回数据异常的情况,同时初始状态虽然是数组,但请求失败时可能被覆盖为非数组值。建议在map前添加可选链判断:{movies?.map(...)},避免在非数组上调用map方法;同时在fetchData中添加try/catch捕获请求错误,防止错误扩散导致状态异常。

内容的提问来源于stack exchange,提问作者Ayushi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 14:41:26