我试图在oneOf()
中嵌套shape()
arrayOf()
的列表,但我收到错误。
警告:道具类型失败:提供给
tabs[0]
的值为[object Object]
的道具MyComponent
无效,预期为[null,null]之一。
是否可以通过oneOf()
shape()
列表?
tabs: React.PropTypes.arrayOf(
React.PropTypes.oneOf([
React.PropTypes.shape({
id: React.PropTypes.string.isRequired,
content: React.PropTypes.node.isRequired,
}),
React.PropTypes.shape({
id: React.PropTypes.string.isRequired,
params: React.PropTypes.object.isRequired,
}),
]),
),
更新!找到answer here,看起来我应该使用OneofType。
tabs: React.PropTypes.arrayOf(
React.PropTypes.oneOfType([
React.PropTypes.shape({
id: React.PropTypes.string.isRequired,
content: React.PropTypes.node.isRequired,
}),
React.PropTypes.shape({
id: React.PropTypes.string.isRequired,
params: React.PropTypes.object.isRequired,
}),
]),
),
答案 0 :(得分:7)
我决定将这个问题的更新发布为答案。
我找到了答案here。我应该使用OneofType。
tabs: React.PropTypes.arrayOf(
React.PropTypes.oneOfType([
React.PropTypes.shape({
id: React.PropTypes.string.isRequired,
content: React.PropTypes.node.isRequired,
}),
React.PropTypes.shape({
id: React.PropTypes.string.isRequired,
params: React.PropTypes.object.isRequired,
}),
]),
),