reactjs 超出获取最大更新深度,即使在具有依赖项时也出错

628mspwn  于 2022-12-26  发布在  React
关注(0)|答案(1)|浏览(130)

我正在从本地存储获取数据,如果本地存储已更改,则呈现整个组件......我收到此错误,但我不知道原因。
这是一个关于最喜欢的电影和设置最喜欢的项目在本地存储和删除它

let [movies, setMovies] = useState([]);
  let [tvs, setTvs] = useState([]);
  let [actors, setActors] = useState([]);
  let [fav,setFav]= useState([FavList])
let getData =()=>{

  window.addEventListener('storage',()=>{
    let tvLocal = JSON.parse(localStorage.getItem('FavTvs'));
    let moviesLocal = JSON.parse(localStorage.getItem('FavMovies'));
    let peopleLocal = JSON.parse(localStorage.getItem('FavActors'));
    
  if(tvLocal!=null&&tvLocal.length!=0){
    setTvs([...tvLocal])
  }else{setTvs([])}

  if(moviesLocal!=null&&moviesLocal.length!=0){
    setMovies([...moviesLocal])
  }else{setMovies([])}

  if(peopleLocal!=null&&peopleLocal.length!=0){
    setActors([...peopleLocal])
  }else{setActors([])}
  
  }
  )
useEffect(()=>{
     getData()
   },[tvs,movies,actors])

我期待对此问题的解释或解决方案

9udxz4iz

9udxz4iz1#

问题是侦听本地存储。并在useEffect依赖项[tvs,movies,actors]要获取存储值,请在useEffect中编写大部分正确的代码。

useEffect (()=>{
let tvLocal = JSON.parse(localStorage.getItem('FavTvs'));
        let moviesLocal = JSON.parse(localStorage.getItem('FavMovies'));
        let peopleLocal = JSON.parse(localStorage.getItem('FavActors'));
        
      if(tvLocal!=null&&tvLocal.length!=0){
        setTvs([...tvLocal])
      }else{setTvs([])}
    
      if(moviesLocal!=null&&moviesLocal.length!=0){
        setMovies([...moviesLocal])
      }else{setMovies([])}
    
      if(peopleLocal!=null&&peopleLocal.length!=0){
        setActors([...peopleLocal])
      }else{setActors([])}
      
      }
},[]);

相关问题