热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

通过ReactuseEffectHook更新状态时防止无限循环

如何解决《通过ReactuseEffectHook更新状态时防止无限循环》经验,为你挑选了1个好方法。



1> Will Jenkins..:

看来您需要通过添加另一个来分离两个获取的关注点useEffect。然后,您可以使用它Promise.all来等待第二个api调用的响应完成,然后再更新歌曲。

const StackOverflowExample = () => {
  const [songs, setSongs] = useState([]);
  const [s3Songs, setS3Songs] = useState([]);
  const getSOng= async sOng=> {
    const artist = song.key.split(" ||| ")[0];
    const title = song.key.split(" ||| ")[1].slice(0, -4);
    const metadata = await API.get("SongList", `/songs/${artist}/${title}`);
    return metadata
  }
  useEffect(() => {
    const getS3SOngs= async () => {
      const s3s = await Storage.list("", { level: "public" })n
       setS3Songs(s3s);
    };
    getS3Songs();
  }, []);
  useEffect(()=>{
     const pending = s3Songs.map(sOng=>getSong(song))
     Promise.all(pending).then(sOngs=>setSongs(songs));
  }, [s3Songs])
  const renderSOngs= () => {
     return songs.map(sOng=> {
       return 
  • {song.title}
  • ; }); }; return (
      {renderSongs()}
    ); };


    哇,威尔,那是一件艺术品!非常感谢您提供如此有用的帮助并提供了有用的解决方案。
    推荐阅读
    author-avatar
    creator
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有