我在React Native视图中有一个动态布局——它根据特定数据集提供的数据而变化。例如,可能有一个提供的指南,库存或观察列表需要显示-但可能只是在任何数据集中提供了一个,两个或三个这些东西的组合。
我需要根据每个提供的数据类型的状态在整个视图中提供条件样式/显示对象。
目前我有一系列的检查返回true如果状态填充,即:
const hasSiteGuide = () => {
if (!this.isEmpty(this.state.locationSiteGuidePdf)) {
return true;
}
};
然后我有一系列函数来确定提供了多少项并提供相关的样式—以下是逻辑检查:
const layout_full = () => {
if (hasSiteGuide() && hasInventoryItems() && hasObservations()) {
return true;
}
};
const layout_one = () => {
if (!hasSiteGuide() && !hasInventoryItems() && !hasObservations()) {
return true;
}
};
const layout_two = () => {
if (!hasSiteGuide() || !hasInventoryItems() !hasObservations()) {
if (hasSiteGuide() || hasInventoryItems()) {
return true;
}
}
};
检查用于在多个区域显示条件样式-例如:
<View
style={[
layout_full() && RP_Styles.btnWrap,
layout_three() && RP_Styles.btnWrap_three,
layout_two() && RP_Styles.btnWrap_two,
layout_one() && RP_Styles.btnWrap_one,
]}>
我的问题是——我确信有更好的方法来做到这一点…特别是当我即将实现第四种可能性-我想知道是否有一种方法,我可以只使用一个函数来计算列表中有多少真语句,并返回相关条件
ie:
returnTrueCount(hasSiteGuide(), hasInventoryItems(), hasObservations())。-这可能吗?或者有人有更好的方法吗?非常感谢
如果你想做这样的事情:returnTrueCount(hasSiteGuide(), hasInventoryItems(), hasObservations())
然后我认为下面的解决方案将会工作。
const a = () => true;
const b = () => true;
const c = () => false;
const d = () => true;
function returnTrueCount(...funcs) {
return funcs.reduce((a, f) => a + +f(), 0);
}
console.log(returnTrueCount(a, b, c, d));
这对我有用:
const returnTrueCount = (array, value) => {
return array.filter((v) => v === value).length;
};
用一个基本数组和要检查的值调用。