<div style={{'backgroundColor': status === 'approved' ? 'blue' : 'black'}}>
</div>
le noir est la couleur par défaut, mais que se passe-t-il si je veux ajouter la 3ème condition?
le statut peut être «approuvé», «rejeté», «en attente» ou plus.
Vous pouvez faire ce qui suit:
<div style={{'backgroundColor': status === 'approved' ? 'blue' : status === 'pending' ? 'black' : 'red'}}>
</div>
Cela signifie que si status === 'approved'
définit la couleur d'arrière-plan en bleu, si status === 'pending'
la définit en noir, sinon, définissez-la en rouge.
Je suggère d'utiliser des fonctions si vos conditions deviennent compliquées, pour ne pas dégrader la lisibilité de votre code.
getBackgroundColor(status) {
if (status === 'approved') {
return 'blue';
}
if (status === 'pending') {
return 'red';
}
return 'black';
}
render() {
// ...
return (
<div style={{ 'backgroundColor': this.getBackgroundColor(status) }}></div>
);
}
Je le traiterais séparément car d'autres types de statut pourraient apparaître à l'avenir.
const getBackgroundColor(status) {
if (status === 'approved') {
return 'blue'
}
else if (status === 'pending') {
return 'black'
} else {
return 'red'
}
}
<div style={{'backgroundColor': getBackgroundColor(status) }}>
</div>
Le code devient plus facile à comprendre et à raisonner.
L'utilisation de plusieurs opérateurs ternaires n'est pas une bonne idée, il est préférable d'utiliser une fonction et d'y placer les conditions if-else et d'appeler cette fonction depuis render Cela vous aide à rendre la pièce de rendu propre et courte.
Comme ça:
<div style={{'backgroundColor': this._style(status)}}></div>
_style(status){
if(status == 'approved')
return 'blue';
else if(status == 'pending')
return 'black';
else return 'red';
}
Pour chaîner des opérations ternaires, vous devez ajouter un autre opérateur ternaire à renvoyer lorsque les conditions ne sont pas remplies, par exemple:
a === true ? a : b
À la place de b
, vous ajouteriez un nouvel opérateur ternaire, comme suit:
a === true ? a : b === true ? b : c
Prime:
Lorsque vous recherchez simplement null/undefined/false, vous pouvez utiliser l'opérateur de canal, par exemple ceci:
var x = a !== null ? a : b;
Peut être simplifié pour:
var x = a || b;
Et les opérateurs de pipe peuvent être chaînés à l'infini comme des opérateurs ternaires.