Je souhaite inclure / omettre dynamiquement l'attribut désactivé sur un élément de bouton. J'ai vu de nombreux exemples de valeurs d'attributs dynamiques, mais pas d'attributs eux-mêmes. J'ai la fonction de rendu suivante:
render: function() {
var maybeDisabled = AppStore.cartIsEmpty() ? "disabled" : "";
return <button {maybeDisabled}>Clear cart</button>
}
Cela génère une erreur d'analyse à cause du caractère "{". Comment puis-je inclure / omettre l'attribut désactivé en fonction du résultat (booléen) de AppStore.cartIsEmpty ()?
a[disabled] { pointer-events: none; }
arrêtera les actions sur un élément / composantVous pouvez passer un booléen à l'
disabled
attribut.la source
disabled
attribut sur le HTML résultant en fonction de la valeur que vous avez passée jsfiddle.net/kb3gN/10379J'utilise React 16 et cela fonctionne pour moi (où
bool
est votre test):Fondamentalement, sur la base du test (
bool
), vous retournez un objet avec l'attribut ou vous retournez un objet vide.De plus, si vous devez ajouter ou omettre plusieurs attributs, vous pouvez le faire:
Pour des attributs plus élaborés, je vous suggère de préfabriquer l'objet avec (ou sans) les attributs en dehors de JSX.
la source
Une manière plus propre de créer des attributs dynamiques qui fonctionne pour tous les attributs est
Appelez votre composant de réaction comme suit
Conseils :
Vous pouvez avoir une
dynamicAttributes
fonction dans un endroit / utilitaires communs et l'importer pour l'utiliser dans tous les composantsvous pouvez passer la valeur
null
pour ne pas rendre l'attribut dynamiquela source
Vous pouvez trouver quelque chose de similaire dans la documentation.
https://facebook.github.io/react/docs/transferring-props.html
Dans votre cas pourrait être quelque chose comme ça
Ce code utilise ES6, mais je pense que vous avez l'idée.
C'est cool car vous pouvez transmettre de nombreux autres attributs à ce composant et cela fonctionnera toujours.
la source
La version que j'ai utilisée était:
la source
Une façon simple et propre de le faire
désactivé devrait provenir d'accessoires comme celui-ci
la source
Bien plus propre que la solution acceptée est la solution mentionnée par AnilRedshift, mais sur laquelle je vais développer.
En termes simples, les attributs HTML ont un nom et une valeur. En abrégé, vous ne pouvez utiliser le nom que pour «désactivé», «multiple», etc. Mais la version longue fonctionne toujours et permet à React de fonctionner de sa manière préférée.
disabled={disabled ? 'disabled' : undefined}
est la solution la plus lisible.la source
Tout d'abord, vous pouvez simplement vérifier
Remarque: ** la valeur désactivée n'est pas une chaîne, elle doit être booléenne .
Maintenant pour dynamique. Vous pouvez simplement écrire
Comme vous pouvez le voir, j'utilise la propriété disabled et entre accolades, il peut s'agir d'une variable locale / var d'état. La variable
disable
contient des valeurs vrai / faux.la source
Cela pourrait fonctionner, le problème avec désactivé est que l'on ne peut pas simplement définir un booléen pour cela.
la source