reactjs - 使用 ReactApp Javascript 获取条件 API
问题描述
我的代码需要一些帮助,当条件如下时它必须显示 API 数据
- 使用 componentWillReceiveProps()
- 当 count == 2 时,它将获取 api
import React, {useState, useEffect,Component} from "react";
var x = 2;
const App =() => {
const [hasError, setErrors]= useState(false)
const [apps, setApps] = useState ("Loading");
useEffect(()=>{
async function fetchData(){
const res = await fetch ("https://m2dzass19b.execute-api.ap-southeast-1.amazonaws.com/dev/api/vdrOptimize/21-09-2019");
res
.json()
.then(res => setApps(res))
.catch(err => setErrors(err))
}
fetchData();
} );
return(
<div>
<span>{JSON.stringify(apps)}</span>
<hr/>
</div>
);
}
解决方案
好的,这是解决方案
将您的 useEffect 更改为这样
useEffect(() => {
async function fetchData() {
const res = await fetch(
"https://m2dzass19b.execute-api.ap-southeast-1.amazonaws.com/dev/api/vdrOptimize/21-09-2019"
);
res
.json()
.then(res => setApps(res))
.catch(err => setErrors(err));
}
if (props.id === 2) {
fetchData();
}
}, [props.id]);
希望能帮助到你
更新:这是您可以使用 comonentWillReceiveProps 的方法
UNSAFE_componentWillReceiveProps(nextProps) {
async function fetchData() {
const res = await fetch(
"https://m2dzass19b.execute-api.ap-southeast-1.amazonaws.com/dev/api/vdrOptimize/21-09-2019"
);
res
.json()
.then(res => this.setState({ apps: res }))
.catch(err => this.setState({ hasError: err }));
}
if (nextProps.id === 2) {
fetchData.call(this);
}
}
注意:componentWillReceiveProps() 是不推荐使用的生命周期方法
推荐阅读
- apache-spark - 当 hdfs 卷为 100% 时回收损坏的表
- javascript - 单击 Jquery 中搜索结果的任何位置时隐藏搜索结果
- path - 我无法选择使用 Java 8 打开。它转到 Internet Explorer,我陷入了一个循环。我该怎么办?
- python - 功能未给出预期结果,单元测试失败
- c# - 如何在其他模型中加入模型列?
- sharepoint - SharePoint 中是否有支持 .sql 文件?
- codeigniter - 如何在codeigniter的pre_controller钩子中获取基本url
- python - 在 Python 中的单词列表中查找三个单词
- regex - 如何使用 Ant replaceregexp 任务检查行首
- node.js - 错误:ER_PARSE_ERROR:您的 SQL 语法有错误