首页 > 解决方案 > 可选问号和对象销毁

问题描述

const { isSaved } = props?.options;

这段代码有意义吗?在这里使用的目的是什么?

如果我这样做会更好吗

const { isSaved = null } = props.options;

标签: reactjstypescript

解决方案


第一个代码没有意义。使用可选链接,当链的任何部分失败时,整个表达式将评估为undefined. 但是你不能访问 的属性undefined,所以如果链失败,引擎会抛出:

const props = undefined;
const { isSaved } = props?.options;

但在 React 中props,如果你指的是通常称为 props 的东西,它总是真实的。在最坏的情况下,它将是一个空对象。

您的第二个代码更有意义,但如果options碰巧不是道具,它仍然会抛出:

const props = {};
const { isSaved = null } = props.options;

替换为空对象:

const props = {};
const { isSaved = null } = props.options || {};
console.log(isSaved);


推荐阅读