web-dev-qa-db-fra.com

React.js - l'accessoire par défaut n'est pas utilisé avec `null` est passé

J'ai des accessoires par défaut dans mon composant React:

PropertyTitleLabel.defaultProps = {
    bedrooms: 1,
    propertyType: 'flat'
};
PropertyTitleLabel.propTypes = {
    bedrooms: PropTypes.number,
    propertyType: PropTypes.string
};

Mais quand je passe null à bedrooms comme:

const bedrooms = null; // in real world API returns `null`
<Component bedrooms={bedrooms} />

Il n'est pas remplacé par un accessoire par défaut :( Des idées?

26
Kosmetika

Vous pouvez remplacer la valeur null par undefined pour utiliser la valeur par défaut.

<Component bedrooms={bedrooms || undefined} />
44
jagsler

Je pense qu'il y a une distinction entre null et undefined qui est faite en traitant avec le defaultProps. La valeur null peut être un comportement voulu et n'est donc pas remplacée par vos valeurs par défaut, tandis que undefined ne l'est pas et sera remplacée.

Comme indiqué dans les documents

[...] utilisé pour garantir que this.props.value aura une valeur si elle n'a pas été spécifiée par le composant parent.

Voici un problème connexe .

13
Balthazar