如何在componentDidMount中生成带有状态的动态URL?

姚明

我想使用componentDidMount中的{this.state.whatever}动态化URL,但是失败了。因为状态值是不确定的(我运行console.log并且错误也显示了它)

我以为componentDidMount在状态重置后运行,所以我可以在URL中使用更新后的状态,但是不起作用,我想知道为什么

state={ breed: "" }
async componentDidMount(){
   try {
       const res = await 
       fetch(`https://dog.ceo/api/breed/${this.state.breed}/images`);
       const data = await res.json();
       const imageUrl = data.message;
       this.setState({
         puppyImage: imageUrl
       })

   } catch (error) {
     console.log(error);
   }
 }

 onChangeHandler = event => {
   this.setState({breed: event.target.value})
 };

由于未定义{this.state.breed},因此该URL不起作用,这意味着它尚未更新。错误显示:GET https://dog.ceo/api/breed//images 404

很酷的家伙

componentDidMount()将只运行一个单一组件呈现之后,也再没有时间。

您应该使用componentDidUpdate()在组件获得更新状态或道具时触发的触发器。在其中,您可以配置逻辑以确定是否应该执行new fetch

componentDidUpdate(prevProps, prevState){
   if(prevState.breed !== this.state.breed){
     try {
       const res = await 
       fetch(`https://dog.ceo/api/breed/${this.state.breed}/images`);
       const data = await res.json();
       const imageUrl = data.message;
       this.setState({
         puppyImage: imageUrl
       })

     } catch (error) {
       console.log(error);
     }
   }
 }

在你做一些改变的假设下this.state.breedcomponentDidUpdate()上面定义逻辑将触发,然后检查它们是否是先前品种状态和更新品种状态之间的差异。如果存在,则对该品种进行新的访存调用,您将获得一个新的uppyImage :)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Python中生成可复制(带有种子)的随机UUID

如何在Flask中生成动态网址?

如何在Linux中生成带有绝对路径的文件列表?

如何在PlantUML中生成带有颜色的图例?

如何在JSF Datatable中生成动态列?

如何在Screeps中生成带有前面名称标签的随机名称?

如何在RMarkdown中生成带有标题的分页表?

如何在Postgresql中生成带有ID的随机数字系列查询?

如何在熊猫中生成动态列

如何在带有类的React TypeScript中生成自定义URL

如何在React中生成动态DOM元素

如何在Java中生成带有非重复数字的随机数?

itextsharp:如何使用itextsharp在PDF中生成带有动态标题的报告?

Rubymine:如何在带有快捷方式的.erb文件中生成<%%>?

如何在Java中生成动态报告

如何在Python中生成带有重复数字的随机列表

如何在Python中生成带有大量小数的随机数?

如何在输出中生成带有用户值的矩形?

如何在 R 中生成带有循环的 n 矩阵

如何在带有文本的emmet中生成所有标题标签?

如何在 C# 中生成带有向下旋转 90 度字母的 Excel 文件?

如何在 YAZIO 中生成带有多个列表 (RecyclerView) 的 ScrollView?

如何在 Oracle 中生成动态序列

如何在角度 7 8 中生成带有动态标题和正文的表格?

如何在java + SpringBoot中生成带有转义字符“\n”的JSON

如何在 NodeJS API 中生成带有 eCharts 内容的 PDF

如何在 C 编程中生成带有某些区域附加某些数字的矩阵?

如何在列表中生成动态 url?

如何在 Python 中生成带有事件的随机数据系列?