Même si j'ai appliqué la validation propType, mon éditeur génère une erreur lorsque la valeur booléenne est transmise pour la variable hasvacancy
prop. Voici ce que je vois:
Erreur: 'SyntaxError: la valeur JSX doit être une expression ou un texte JSX cité'
Je sais que je transmets une valeur de type de chaîne pour 'hasvacancy' prop, mais que dois-je faire pour pouvoir transmettre un booléen ou d'autres types de données via le prop.
import React from 'react';
import { render } from 'react-dom';
class VacancySign extends React.Component{
render() {
console.log('------------hasvacancy------', this.props.hasvacancy);
if(this.props.hasvacancy) {
return(
<div>
<p>Vacancy</p>
</div>
);
} else {
return(
<div>
<p>No-Vacancy</p>
</div>);
}
}
}
VacancySign.propTypes ={
hasvacancy: React.PropTypes.bool.isRequired
}
render(<VacancySign hasvacancy='false'/> ,
document.getElementById('root'));
Vous devez inclure la valeur booléenne dans {}:
render(<VacancySign hasvacancy={false}/> , document.getElementById('root'));
N'essayez pas de transmettre des valeurs booléennes en tant que valeurs d'attribut. À la place, utilisez simplement leur présence ou leur absence comme valeur booléenne:
render(<VacancySign hasVacancy />, document.getElementById('root'));
Assurez-vous de mettre à jour vos propriétés pour rendre hasVacancy non requis, ainsi:
VacancySign.propTypes ={
hasVacancy: React.PropTypes.bool
}
A ceux d'entre vous qui ont reçu l'avertissement
warning.js?6327:33 Warning: Received `true` for a non-boolean attribute `editable`
Cela se produit si vous transmettez les accessoires sans prendre les valeurs booléennes de ceux-ci.
Par exemple.:
const X = props => props.editable ? <input { ...props } /> : <div { ...props } />
Ceci peut être contourné par
const X = ({ editable, ...props }) => editable ? <input { ...props } /> : <div { ...props } />