使用 null 反应默认道具值
React default props value using null
在为对象或函数等值设置默认 props 时,是否有理由使用 null 作为默认 prop 而不是空函数或空对象?有什么优缺点吗
例如,而不是做类似
的事情
static defaultProps = {
onClick: null,
person: null
};
对比
static defaultProps = {
onClick: () => {},
person: {},
};
将 null 设置为默认值背后的原因是什么,或者这是一种不好的做法?
假设您有一个逻辑,即如果您从 parent 获得道具,某些视图将可见。如果您没有收到任何道具,那么道具值将是默认值。所以你的逻辑在那种情况下可能无法正常工作。
为必需的道具设置 null 或空对象可能被认为是一种不好的做法。如果 prop 是必需的,但具有默认值,则此时实际上没有强制要求它。有关更多信息,请参阅来自 Cory House 的 tweet。
现在,如果不需要 prop,并且您想添加默认 prop,我可以论证 null 比空对象更容易使用,因为空对象仍然是真实的,这会稍微冗长一些if 检查,而 null 是错误的,使 if 检查更简洁。
根据评论更新:
比拥有一个空对象或 null 更好,可能实际上拥有代表真实事物的数据。例如,如果我有一个看起来像这样的道具。
const person = {
cars: []
}
我不想默认将 person 设置为空对象或 null,因为索引到 person.cars
会使我爆炸,但如果形状存在,我可以确定我不会即使数据还没有,也会爆炸。
在为对象或函数等值设置默认 props 时,是否有理由使用 null 作为默认 prop 而不是空函数或空对象?有什么优缺点吗
例如,而不是做类似
的事情static defaultProps = {
onClick: null,
person: null
};
对比
static defaultProps = {
onClick: () => {},
person: {},
};
将 null 设置为默认值背后的原因是什么,或者这是一种不好的做法?
假设您有一个逻辑,即如果您从 parent 获得道具,某些视图将可见。如果您没有收到任何道具,那么道具值将是默认值。所以你的逻辑在那种情况下可能无法正常工作。
为必需的道具设置 null 或空对象可能被认为是一种不好的做法。如果 prop 是必需的,但具有默认值,则此时实际上没有强制要求它。有关更多信息,请参阅来自 Cory House 的 tweet。
现在,如果不需要 prop,并且您想添加默认 prop,我可以论证 null 比空对象更容易使用,因为空对象仍然是真实的,这会稍微冗长一些if 检查,而 null 是错误的,使 if 检查更简洁。
根据评论更新:
比拥有一个空对象或 null 更好,可能实际上拥有代表真实事物的数据。例如,如果我有一个看起来像这样的道具。
const person = {
cars: []
}
我不想默认将 person 设置为空对象或 null,因为索引到 person.cars
会使我爆炸,但如果形状存在,我可以确定我不会即使数据还没有,也会爆炸。