【发布时间】:2020-11-03 04:54:24
【问题描述】:
今天更新了一些代码,将可选的 props 返回到 React 组件。我发现即使函数有时返回null,当返回值立即解包时它也不会出错。
迂腐的代码总结:
const returnPropsOrDont = (condition) => {
if (condition) return null;
return { optionalProp: 'foo' };
}
...
render() {
const { condition } = props;
return <SomeComponent
staticProp="staticProp"
{...returnPropsOrDont(condition)}
/>
}
意识到这很酷,我跑到控制台并在对象和数组上进行了尝试。唉-
> {...null} // {}
> {...undefined} // {}, which is interesting because null is an object but undefined is not
> [...null] // Uncaught TypeError: object null is not iterable
我做了一些简单的谷歌搜索和found one article,这表明 TypeScript 认为这是一个确保可选定义的值不会困扰毫无戒心的开发人员的功能。很好,但是 a) 我没有使用 TypeScript,并且 b) 我不知道为什么 JS 不会以同样的方式保护数组。
既然这似乎是对可选定义值的一种保护,为什么{...null} 可以,而[...null] 不行?
【问题讨论】:
-
@YevgenGorbunkov 那么它真的不应该与
undefined一起工作,对吧?但它确实 -
“这很有趣,因为 null 是一个对象,但 undefined 不是”
null也不是一个对象。typeof在这方面不是很好。