在为对象或函数等值设置默认属性时,是否有理由为什么要使用null作为默认属性而不是说一个空函数或空对象?有什么利弊吗?
例如,不要做类似的事情
static defaultProps = {
onClick: null,
person: null
};
vs
static defaultProps = {
onClick: () => {},
person: {},
};
将null设置为默认值是什么原因?或者这是一种不好的做法?
答案 0 :(得分:0)
假设您有一个逻辑,即如果您从父母那里获得道具,则某些视图将可见。如果您没有收到任何道具,则道具值为默认值。因此您的逻辑在这种情况下可能无法正常工作。
答案 1 :(得分:0)
为所需道具设置null或空对象可能会被认为是一种不好的做法。如果prop是必需的,但具有默认值,则此时实际上没有任何强制要求。有关更多信息,请参见Cory House的tweet。
现在,如果不需要该道具,而您想添加一个默认道具,则我可以使null的论点比空对象更容易使用,因为空对象仍然是真实的,如果检查的话,它会更加冗长,而null为false,则使检查更加简洁。
基于评论的更新:
比拥有一个空对象或null更好的是,实际上拥有代表真实事物的数据。例如,如果我有一个看起来像这样的道具。
$MainForm.add_click({($x = $MainForm.location.x+5); $y = $MainForm.location.y; $Mainform.Location = New-Object System.Drawing.Point($x, $y)})
我不想将person设置为空对象或默认为null,因为索引到const person = {
cars: []
}
会导致我炸毁,但是如果形状存在,我可以确定不会炸毁即使数据还不存在。