使用null反应默认的props值

时间:2018-06-19 20:37:45

标签: reactjs react-proptypes

在为对象或函数等值设置默认属性时,是否有理由为什么要使用null作为默认属性而不是说一个空函数或空对象?有什么利弊吗?

例如,不要做类似的事情

static defaultProps = {
  onClick: null,
  person: null
};

vs

static defaultProps = {
  onClick: () => {},
  person: {},
};

将null设置为默认值是什么原因?或者这是一种不好的做法?

2 个答案:

答案 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: [] } 会导致我炸毁,但是如果形状存在,我可以确定不会炸毁即使数据还不存在。