web-dev-qa-db-fra.com

React linter tableau airbnb proptypes

J'ai le PropTypes suivant:

SmartTable.propTypes = {
  name: React.PropTypes.string.isRequired,
  cols: React.PropTypes.array.isRequired,
  rows: React.PropTypes.array.isRequired,
};

mais le linter me dit:

Prop type array is forbidden, Comment puis-je le changer?

18
FacundoGFlores

Une solution possible pour cela (mais je pense que ce n'est pas intelligent):

SmartTable.propTypes = {
  name: React.PropTypes.string.isRequired,
  cols: React.PropTypes.arrayOf(React.PropTypes.string),
  rows: React.PropTypes.arrayOf(React.PropTypes.string),
};
46
FacundoGFlores

Une des solutions qui a fonctionné pour moi:

Si vous voulez des tableaux:

SmartTable.propTypes = {
  name: PropTypes.string.isRequired,
  cols: PropTypes.instanceOf(Array),
  rows: PropTypes.instanceOf(Array),
};

Pour les objets et les tableaux, il peut s'agir:

SmartTable.propTypes = {
  name: PropTypes.string.isRequired,
  cols: PropTypes.instanceOf(Object),
  rows: PropTypes.instanceOf(Array),
};
7
JuzerK

Si le tableau de colonnes et de lignes est un objet, j'aime utiliser la forme, ce pourrait donc être quelque chose comme ça.

SmartTable.propTypes = {
  name: PropTypes.string.isRequired,
  cols: PropTypes.arrayOf(PropTypes.shape({
    id: PropTypes.string.isRequried,
    value: PropTypes.string,
   })
  rows: PropTypes.arrayOf(PropTypes.shape({
    id: PropTypes.string.isRequried,
    value: PropTypes.string,
   })

};

4
P-A

Versions courtes:

pour Array PropTypes.shape([])

pour Object PropTypes.shape({})

1
Luka