reactjs - 如何重构代码以使用反应循环遍历对象数组?
问题描述
我有具有属性属性和信息的对象数组...这些属性是具有名称和值对的对象数组。
我必须根据这些显示可用或不可用的数据。
如果属性名称和值对不为空,并且为每个属性和信息定义了 info 属性,那么我将显示消息“数据可用”,如果不是,则显示消息“无数据可用”。
下面是数据结构......
data: [
{
attributes: [
{
name: '', value: ''
}, {
name: '', value:
"somee"
},
],
info: 'ddd',
},
{
attributes: [
{ name: '', value: '' },
],
info: '',
},
]
所以我尝试了类似下面的方法并且有效。
render = () => {
const has_attributes = this.data &&
this.data.some((data) => data.attributes.length > 0 &&
data.attributes.some(attribute => attribute.name ||
attribute.value));
const has_info = this.data && this.data.some((data) => data.info);
const has_some_data = has_attributes || has_info;
return (
{!this.data || !has_some_data) &&
<div>No data available</div>}
{this.data && has_some_data &&
<div>Data available</div>}
);
}
有人可以帮我重构一些更具可读性和减少代码的东西。
谢谢。
解决方案
您的问题是您的深层嵌套结构,而不是如何重构您的代码。使用多个嵌套数组,您的代码本质上看起来“脏”,您可以重构的只有这么多。考虑重构您的数据对象,因为您将尝试使用当前结构进行的任何操作都将变得更难管理和维护。
推荐阅读
- python - 检测数据集线性部分的算法
- java - 滚动时底部的添加到购物车按钮 - Shopify
- performance - 如何根据渲染时可用的值有条件地将组件添加到 JSF 组件树?
- java - Automatically spawns a code and get error
- c# - NopCommerce - Error with Search Box
- javascript - 带有翻转数字的数字倒计时动画
- android - BringToFront() 不适用于 ConstraintLayout
- r - 如何从 R 中的绘图元素中提取原始数据
- php - 如何链接到 ACF 关系“父级”
- tfs - 使用 TFS API 获取测试用例结果/结果