Reactjs 使用null对默认道具值进行反应

Reactjs 使用null对默认道具值进行反应,reactjs,react-proptypes,Reactjs,React Proptypes,当为对象或函数等值设置默认属性时,是否有理由希望使用null作为默认属性,而不是空函数或空对象?有什么优点和缺点吗 例如,与其做类似的事情 static defaultProps = { onClick: null, person: null }; vs 将null设置为默认值的原因是什么?或者这是一种不好的做法?假设您有一个逻辑,即如果您从家长处获得道具,某些视图将可见。如果您没有收到任何道具,那么道具值将是默认值。因此,在这种情况下,您的逻辑可能无法正常工作。为所需的道具设置nul

当为对象或函数等值设置默认属性时,是否有理由希望使用null作为默认属性,而不是空函数或空对象?有什么优点和缺点吗

例如,与其做类似的事情

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


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

假设您有一个逻辑,即如果您从家长处获得道具,某些视图将可见。如果您没有收到任何道具,那么道具值将是默认值。因此,在这种情况下,您的逻辑可能无法正常工作。

为所需的道具设置null或空对象可能被认为是一种不好的做法。如果道具是必需的,但有一个默认值,那么此时实际上并不需要强制它。更多信息,请参见Cory House提供的

现在,如果不需要该属性,并且您想要添加一个默认属性,那么我可以提出一个论点,即null比空对象更容易使用,因为空对象仍然是真实的,这使得if检查稍微更详细,而null是false,使得if检查更简洁

根据评论更新:

与空对象或空对象相比,更好的方法可能是实际拥有表示真实对象的数据。例如,如果我有一个像这样的道具

const person = {
  cars: []
}

默认情况下,我不想将person设置为空对象或null,因为索引到
person.cars
会导致我爆炸,但如果形状存在,我可以确定即使数据还不存在,我也不会爆炸。

缺点很简单;您现在有了一个
null
,您必须在使用它之前检查它,否则事情会爆炸。有什么原因吗?当然可以,但这一切都归结为空对象圣战,以及你自己的观点。根据那条推特,你认为什么是一个好的方法来制作功能和对象不需要的道具?只是好奇,所以没有“大”除非检查truthy/falsy,否则将它们设置为空函数/对象或null的区别。(这还包括确保它不会像您的person.cars示例那样破坏代码)
const person = {
  cars: []
}