ReactJS:对象数组的 propTypes 验证

zei*_*ush 2 javascript reactjs react-proptypes

我有一个对象数组

[
    {
      id: 1,
      customtitle: '',
      IconSRC: '',
      btnColor: '',
      inlineSyle: '',
      btnStyle: {
        width: '100px',
        height: '100px',
        flexDirection: 'column',

      },
      num: 1,
    },
    {
      id: 2,
      customtitle: '',
      IconSRC: '',
      btnColor: '',
      inlineSyle: '',
      btnStyle: {
        width: '100px',
        height: '100px',
        flexDirection: 'column',

      },
      num: 2,
    },]
Run Code Online (Sandbox Code Playgroud)

我很困惑让它作为道具验证工作。我需要帮助修复它,我尝试这种方式

Function.propTypes = {
  list: PropTypes.objectOf(PropTypes.shape({
    id: PropTypes.number,
    btnColor: PropTypes.string,
    customTitle: PropTypes.string,
    btnStyle:PropTypes.object
    IconSRC: PropTypes.string,
    inlineSyle: PropTypes.string,
  })),
};
Function.defaultProps = {
  List: [],
}; 
Run Code Online (Sandbox Code Playgroud)

但这没有用。没有这个 proptype,我的组件可以正常工作。但 eslint 显示此文本错误

props 验证 eslint(react/prop-types) 中缺少 .map'

tec*_*ick 9

你想要的其实是PropTypes.arrayOf(). 例如:

list: PropTypes.arrayOf(PropTypes.shape({
    id: PropTypes.number,
    btnColor: PropTypes.string,
    customTitle: PropTypes.string,
    btnStyle:PropTypes.object
    IconSRC: PropTypes.string,
    inlineSyle: PropTypes.string,
  })),
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看 PropTypes 的完整列表。