web-dev-qa-db-fra.com

Flowtype, React et defaultProps

Après des heures de recherches et de tests, je n'ai pas réussi à trouver de solution pour faire comprendre le flux par défaut

Voir exemple d'essai de flux

L'utilisation de ce modèle est inconsistante:

type PropsType = {|
  size?: 'small' | 'big',
|};


class Letter extends PureComponent<PropsType> {

  static defaultProps = {
    size: 'small',
  }

}

Merci

Éditer

Après la suggestion de Tomasz Mularczyk, j'ai créé n autre exemple Try Flow avec:

type PropsType = {|
  size: 'small' | 'big',
|};

au lieu de

type PropsType = {|
  size?: 'small' | 'big',
|};

Mais

defaultProp size n'est plus tapé:

static defaultProps = {
  size: 'BAD DEFAULT PROPS', // no error (?!)
}

Solution

Voir la réponse de Tomasz Mularczyk

+

N'attendez pas une erreur de flux sur votre composant actuel (dans mon cas), mais où il sera importé et déclaré (semble semi-statique non?)

10
Made in Moon

Il suffit de supprimer ? de size type. Flow verra automatiquement que vous avez créé defaultProps et n'en aura pas besoin.

De docs:

Pour taper les accessoires par défaut, ajoutez une propriété statique DefaultProps à votre classe.

...

React prend également en charge les accessoires par défaut sur les composants fonctionnels sans état. De même que pour les composants de classe, les accessoires par défaut pour les composants fonctionnels sans état fonctionneront sans annotations de type supplémentaires.

7
Tomasz Mularczyk