如果我的状态属于此自定义类型:
interface DataType { [key: string]: string;}
const [data, setData] = React.useState<DataType>({});
然后我尝试
console.log(data === {})
为什么它返回false?
如何检查状态是否仍为{}
?
感谢您的帮助!
答案 0 :(得分:1)
比较data === {}
时,将根据类型和引用执行相等性检查。
一个对象不等于另一个对象。您需要检查数据是否是对象,而不是null或数组,并且没有键来查看其空对象
const isEmptyObject = (data) => {
if(data !== null && typeof data === 'object' &&!Array.isArray(data)) {
return Object.keys(data).length === 0;
}
return false;
}
console.log(isEmptyObject({}));
console.log(isEmptyObject({x: 1}));