偶然发现这段代码:
var text = 'text' in this.props ? this.props.text : '';
但即使我了解上下文,我也很难阅读这一特定的内容。它被描述为防御性代码,因为在React中它可以用getDefaultProps()
方法替换
答案 0 :(得分:2)
这是否有一个名为text
的道具。如果是这样,三元组会说var text = this.props.text;
。如果text
中没有this.props
,则三元组会说var text = '';
。它是防御性代码,因为如果它不包含在道具中,它会使text
成为字符串而不是undefined
。
答案 1 :(得分:0)
in
运算符检查属性是否是对象的成员。
('text' in this.props) ≈≈ (Object.keys(this.props).includes('text'))
因此,代码段的作用是检查text
中是否定义this.props
,如果是,则返回,否则返回空String
。