当前位置 : 主页 > 网页制作 > React >

reactjs – 如何在React组件PropTypes中定义替代必需属性?

来源:互联网 收集:自由互联 发布时间:2021-06-15
这是用例:组件TableGroup应该要求用户指定data属性,该属性是要在表中呈现的对象数组或requestDataUrl属性,组件将从该属性获取该对象数组.简而言之,这两个属性中的一个是必需的,但不是两
这是用例:组件TableGroup应该要求用户指定data属性,该属性是要在表中呈现的对象数组或requestDataUrl属性,组件将从该属性获取该对象数组.简而言之,这两个属性中的一个是必需的,但不是两个.我怎么能在下面的component.propTypes对象中实现呢?

TableGroup.propTypes = {
  fieldNames: React.PropTypes.array.isRequired,
  dataFields: React.PropTypes.array.isRequired,
  uniqueField: React.PropTypes.string.isRequired,
  data: React.PropTypes.array,
  requestUrlSource: http://someurl/api/resource
}
要达到预期效果,请使用以下选项

function dataOrRequest(props, propName, componentName) {
  return  (!props.hasOwnProperty('data') && 
             !props.hasOwnProperty('requestUrlSource')) 
            && new Error(`Either "data" or "requestUrlSource" is required`);
}


TableGroup.propTypes = {
  fieldNames: React.PropTypes.array.isRequired,
  dataFields: React.PropTypes.array.isRequired,
  uniqueField: React.PropTypes.string.isRequired,
  data: dataOrRequest,
  requestUrlSource: dataOrRequest
}
网友评论