J'essaie actuellement d'utiliser l'attribut de style React pour styliser dynamiquement les composants React. La première condition de style utilisant l'attribut fonctionne correctement, mais à la deuxième condition, j'obtiens cette erreur: "Erreur d'analyse: jeton inattendu, attendu"} "" Voici mon code:
<input
className="inputFieldComponent"
id={field.name}
type={field.type}
value={value}
disabled={(parentState.primaryVinRetrieved && field.name === 'makePrimary')
|| (parentState.primaryVinRetrieved && field.name === 'modelPrimary')
|| (parentState.secondaryVinRetrieved && field.name === 'makeSecondary')
|| (parentState.secondaryVinRetrieved && field.name === 'modelSecondary')}
placeholder={field.placeholder}
onChange={handleInputChange}
style={
field.currency && {
paddingLeft: '10px',
}
field.name === 'makePrimary' && {
color: 'grey',
}
}
/>
En gros, j'essaye d'enchaîner des conditions supplémentaires dans l'attribut style. Je ne sais pas si c'est la syntaxe appropriée pour cela. S'il y a un meilleur moyen d'accomplir cela, veuillez le conseiller. Merci.
3 Réponses :
Vous pouvez répartir des objets de manière conditionnelle.
<input
className="inputFieldComponent"
id={field.name}
type={field.type}
value={value}
disabled={
(parentState.primaryVinRetrieved && field.name === 'makePrimary') ||
(parentState.primaryVinRetrieved && field.name === 'modelPrimary') ||
(parentState.secondaryVinRetrieved && field.name === 'makeSecondary') ||
(parentState.secondaryVinRetrieved && field.name === 'modelSecondary')
}
placeholder={field.placeholder}
onChange={handleInputChange}
style={{
...(field.currency
? {
paddingLeft: '10px',
}
: {}),
...(field.name === 'makePrimary'
? {
color: 'grey',
}
: {}),
}}
/>;
Vous pouvez simplement ajouter de nouvelles propriétés dans un objet styles car les styles ne sont rien, c'est juste un objet, vous pouvez donc ajouter de nouvelles propriétés comme celle-ci:
var data = {}; data ["property"] = 4;
Ainsi, dans votre code, vous pouvez utiliser votre opérateur de style comme:
let styles = {};
if(field.name === 'makePrimary') styles["color"] = 'grey';
if(field.currency) styles["paddingLeft"] = '10px';
où, styles est:
style = { styles }
Une autre approche consiste à utiliser l'opérateur de diffusion.
Vous pouvez utiliser le composant stylisé ainsi que son aide pour passer des paramètres dynamiquement dans un fichier css. Pour plus d'informations à ce sujet, suivez le lien ci-dessous: https://styled-components.com/