确保数组属性的每个元素都符合 React 中的自定义形状

IT技术 properties reactjs
2021-05-12 08:54:01

我想确保数组属性的每个元素都符合特定的形状。

这与React proptype array with shape 中回答的问题不同他们测试了每个元素是否与给定的预定义 React proptype 验证器匹配,在这种情况下是 React.propTypes.number。 我有兴趣针对自定义对象形状进行测试。

例如:

class MyClass extends React.Component {
  constructor(props) {
    super(props);
  }

  static propTypes = {
    data: React.PropTypes.arrayOf({
      name: React.PropTypes.string,
      year: React.PropTypes.number,
    })
  }
}

这会触发警告: Failed propType: typeChecker is not a function Check the render method

1个回答

您已经接近了,但是您需要指定数组属于哪种类型的 proptype,React.PropTypes.shape让您指定一个带有键及其类型的对象。

static propTypes = {
  data: React.PropTypes.arrayOf(
    React.PropTypes.shape({
      name: React.PropTypes.string,
      year: React.PropTypes.number,
    })
  )
}

提示:这样import React, { PropTypes } from 'react'做你可以只使用PropTypes.