对于条件渲染,我检查我的对象是否得到一个空值。
我使用“useState”将每个对象值传递给“isEmpty”。首先,我创建一个新对象,因为我删除了可以为空的值“SummaryOfChanges”。然后,我使用“some”获取每个值并将每个值传递给“isEmpty”
//使用效果
useEffect(() => {
if (offerData) {
let myObject = { ...offerData };
const { SummaryOfChanges, ...newObject } = myObject;
if (Object.values(newObject)?.some((x) => isEmpty(x))) {
setCheckIfEmpty(true);
} else {
setCheckIfEmpty(false);
}
}
}, []);
//空
export const isEmpty = (value) => {
return (
value === undefined ||
value === null ||
(typeof value === 'object' && Object.keys(value).length === 0) ||
Object.keys(value) === undefined ||
Object.keys(value) === null ||
(typeof value === 'string' && value.trim().length === 0)
);
};
我的对象的例子:
offerData : {
valueOne : "hello",
objectOne : {
valueOne: 'Hello',
valueTwo : null}
}
问题:isEmpty工作正常,如果值、嵌套对象或数组为空,则检入我的对象。但有时候,嵌套对象不是空的,而是值为“null”。
我需要在“isEmpty”中添加一些条件来检查嵌套对象和数组中的每个值。
因此,在这种情况下,setCheckIfEmpty将返回'false',因为我的“objectOne”不为空,即使“objectOne.valueTwo”=== null。
实际上,我试图Map每个值,但目前它不起作用。
2条答案
按热度按时间t9eec4r01#
要递归地检查对象,应该修改
isEmpty
函数,使其在嵌套对象上调用自身:yk9xbfzb2#
要在对象的值或任何子对象中进行搜索,无论子对象的内部有多深,都可以使用递归:
测试: