热门标签 | 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()}
    ); };


    哇,威尔,那是一件艺术品!非常感谢您提供如此有用的帮助并提供了有用的解决方案。
    推荐阅读
    • React项目中运用React技巧解决实际问题的总结
      本文总结了在React项目中如何运用React技巧解决一些实际问题,包括取消请求和页面卸载的关联,利用useEffect和AbortController等技术实现请求的取消。文章中的代码是简化后的例子,但思想是相通的。 ... [详细]
    • Jenkins里创建job项目(linux)
      常见自由模式项目在Jenkins里点击,打开后输入项目名称、选择“Freestyleproject”并确定。     源码管理:在项目列表面板点击刚才创建的空项目,打开后点击源 ... [详细]
    • jenkins用户手册15进程内脚本认证
      jenkins和一些插件,允许用户在jenkins中执行groovy脚本。这些脚本功能是由下面支持的:.脚本控制台.jenkins通道.扩展的邮件插件.groovy插件-当 ... [详细]
    • 基于,docker,快速,部署,多,需求,spark ... [详细]
    • linux和jenkins的连接
      1.在浏览器中打开我们的jenkins页面。(http:ip:端口号jenkins)2.然后登陆管理员用户。3.配置节点信息1).点击【jenkins管理】【节点管理】【新建节 ... [详细]
    • 解决jenkins下载慢的问题:替换下载源
      流程前两步与官网一致,然后点击下面的镜像网站华为镜像清华镜像进入选择需要的版本,右键复制链接在后面添加链接即可yum-yinstallhttps:m ... [详细]
    • jenkins 搭建配置
      jenkins部署安装方法一: 下载jenkinswar包  wgethttp:mirrors.jenkins.iowar-stablelatestjenkins.war运行jen ... [详细]
    • jdk jenkins 配置ant_Jenkins系列之—04 节点配置
      一、节点配置1.进入【系统管理】-【节点管理】-【新建节点】,录入节点名,选择PermanentAgent,下一步录入节点详细配置信息&# ... [详细]
    • JenkinsHudson是一套非常强大的自动化构建系统,其具有使用简单,对各种开发环境支持良好,正确地使用能解决研发过程管理中版本构建、发布的诸多问题。本文描述了笔者在使用过程中 ... [详细]
    • docker+k8s+git+jenkins
      docker+k8s+git+jenkins,Go语言社区,Golang程序员人脉社 ... [详细]
    • 5g信道36最快(5g理论下行速度是多少)
      本文主要介绍下行的PDCCH和PDSCH,以及上行的PUCCH和PUSCH信道。在检测到有效PDCCH时,设备遵循PDCCH中包含的下行链路控制信息,例如调度决策,以便设备相应地接 ... [详细]
    • Docker系列 七. Docker 安装Jenkins
      Docker系列七.Docker安装JenkinsJenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作 ... [详细]
    • Jenkins的分布式构建,在Jenkins的配置中叫做节点,分布式构建能够让同一套代码或项目在不同的环境(如:Windows和Linux系统)中编译、部署等。将jenkins项目 ... [详细]
    • Jenkins教程:使用Jenkins进行持续集成
      【注】本文译自:https:www.edureka.coblogjenkins-tutorial本文将重点介绍Jenkins架构和Jenkins构建管道,并向您展示如何在Jenki ... [详细]
    • 使用Jenkins安装maven插件
      1.新安装的Jenkins新建一个任务,点击创建一个新任务。2.我想创建一个maven项目的任务,发现缺少maven选择。3.原因是因为缺少maven插件,我们来安装插件,找到“系 ... [详细]
    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社区 版权所有