reactjs - 如果 React Native 中没有数据,如何检查平面列表
问题描述
我正在尝试检查数据是否没有出现在服务器的平面列表中
这是我的平面列表,现在我想对其进行检查...
<FlatList
data={this.state.fetchJobs}
keyExtractor={(a, b) => b.toString()}
renderItem={({ item }) => (
<TouchableOpacity
activeOpacity={0.9}
onPress={() =>
this.props.navigation.navigate("DetailJobScreen", {
job_id: item.job_id
})
}
>
<CompleteJobLayout
Completejobname={`${entities.decode(item.employer_name)}`}
featuredCompleteJobColor={`${entities.decode(
item.featured_color
)}`}
imageUriCompleteJobfeatured={{ uri: `${item.featured_url}` }}
Completejobtitle={`${entities.decode(item.project_title)}`}
jobflagimageUri={{ uri: `${item.location.flag}` }}
Completejoblevel={`${entities.decode(
item.project_level.level_title
)}`}
Completejobcountry={`${entities.decode(
item.location._country
)}`}
Completejobrate={`${entities.decode(item.project_cost)}`}
fav_job_user_id={item.job_id}
Fav_Color={`${entities.decode(item.favorit)}`}
Completejobduration={`${entities.decode(
item.project_duration
)}`}
/>
</TouchableOpacity>
)}
/>
这是数据传入时的响应...
[
{
"favorit": "",
"featured_url": "",
"featured_color": "",
"location": {
"_country": "India",
"flag": "https://amentotech.com/projects/api_workreap/wp-content/uploads/2019/03/img-03-2.png"
},
"job_id": 178,
"job_link": "https://amentotech.com/projects/api_workreap/project/forest-technology-professor/",
"_is_verified": "yes",
"project_level": {
"level_title": "Medium Level",
"level_sign": 0
},
"project_type": "Fixed",
"project_duration": "01 to 03 months",
"project_cost": "$6,399.00",
"attanchents": [
{
"document_name": "WordPress customization",
"file_size": "85.84 KB",
"filetype": {
"ext": "pdf",
"type": "application/pdf"
},
"extension": "",
"url": "https://amentotech.com/projects/worktern/wp-content/uploads/2019/03/WordPress-customization.pdf"
},
{
"document_name": "How to run mysql command in database",
"file_size": "16.06 KB",
"filetype": {
"ext": "docx",
"type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
},
"extension": "",
"url": "https://amentotech.com/projects/worktern/wp-content/uploads/2019/03/How-to-run-mysql-command-in-database.docx"
}
],
"skills": [
{
"skill_link": "https://amentotech.com/projects/api_workreap/skill/c/",
"skill_name": "C++"
},
{
"skill_link": "https://amentotech.com/projects/api_workreap/skill/graphic-design/",
"skill_name": "Graphic Design"
},
{
"skill_link": "https://amentotech.com/projects/api_workreap/skill/html-5/",
"skill_name": "HTML 5"
},
{
"skill_link": "https://amentotech.com/projects/api_workreap/skill/seo/",
"skill_name": "SEO"
}
],
"employer_name": "Steven Ford",
"project_title": "Forest Technology Professor",
"project_content": "Some Data"
}]
这是没有可用数据时的响应...
[
{
"type": "error",
"message": "Some error occur, please try again later"
}
]
这是我获取数据的功能...
fetchCompleteJobData = async () => {
const { params } = this.props.navigation.state;
const response = await fetch(
"https:...//listing/get_jobs?listing_type=company&company_id=" +
params.employ_id
);
const json = await response.json();
this.setState({ fetchJobs: json, isLoading: false });
console.log('These are my jobs'+JSON.stringify(fetchJobs))
};
请告诉我如何检查是否没有数据显示没有数据消息
解决方案
您可以检查响应是否属于类型error
并在组件的状态中设置一个空数组。
fetchCompleteJobData = async () => {
//... your code to fetch data
const json = await response.json();
if(Array.isArray(json) && json[0] && json[0].type && json[0].type === 'error') {
this.setState({ fetchJobs:[], isLoading: false }); // empty data set
} else {
this.setState({ fetchJobs: json, isLoading: false });
}
};
推荐阅读
- c# - 替代 StreamReader.ReadLine(filepath) 以避免内存不足?
- ios - Flutter iOS 存档版本在 Xcode 中获取“xx plugin.h”文件未找到错误
- c - 简单 C 计算器中的分段错误
- c++ - 使用三元运算符并删除移动/复制 ctor 时,Visual Studio 不执行 RVO
- javascript - 谷歌地图中标记的打开和关闭切换按钮反应
- php - 如何在爬取中使用 dom xpath?
- python - 如何使用 pysftp/paramiko 在 python 中启用键盘交互式身份验证?
- playframework - 如何从文件系统提供静态资产而不是默认资产 JAR 包(Play 框架)
- python - 无法在 Mac OS Mojave 上导入海龟(版本 10.14.2)
- javascript - 从另一个页面上的 HTML 表单访问值