当 TypeError: Cannot read property 'foo' of null
有时返回 null 时,我得到 bar
。
当值栏为空时如何防止?
我认为 bar: { foo } = {}
这是解决方案,但不是 :(
export default function Component({ data }) {
const {
bar: { foo } = {},
} = data
return (...)
}
答案 0 :(得分:3)
null
在技术上是一个定义的值,所以在这里使用回退值语法是失败的。
一个简单的解决方案是将 Optional Chaining operator 与 Nullish Coalescing 结合使用。
const { foo } = data?.bar ?? {};
如果 data.bar
不是 null
或 undefined
,则使用它,否则提供后备空对象。
const data1 = { bar: { foo: 'foobar' }};
const data2 = { bar: null };
const { foo: foo1 } = data1?.bar ?? {};
console.log(foo1); // foobar
const { foo: foo2 } = data2?.bar ?? {};
console.log(foo2); // undefined