【发布时间】:2018-09-17 22:52:04
【问题描述】:
我将 props 对象传递给子组件。我遇到的问题是,有时某些嵌套值将为空或未定义,因此我收到了可怕的道具未定义消息Uncaught TypeError: Cannot read property 'xxx' of undefined。
据我了解,defaultProps 仅在 props 对象为空时触发,而不是仅在其 部分 值为空时触发。
例子:
this.state {
person: {
name: "Matt",
age: 34,
OtherDetails: { city:"", country: "" }
}
}
在上面的示例中,有时城市或国家/地区的值将为空或未定义。检查这些实例似乎非常困难和费力 - 当道具数据不完整且不可靠时,处理此类情况的最佳方法是什么?
【问题讨论】:
-
你在使用 Redux 吗?
-
你考虑过尝试 PropTypes 吗?
-
是的 redux 和 PropTypes 只会触发 defaultProps ,不是吗?
-
“检查这些实例似乎非常困难和费力” 实际上一点也不。理想的解决方案是始终发送整个对象。如果您的组件需要对象的所有属性,则父组件应发送它们。但是,在使用之前检查每个对象并不难,例如
const otherDetails = this.state.person.otherDetails || {}或使用可以正确处理空值的 API,例如_.get在lodash.
标签: reactjs