Quiero incluir / omitir dinámicamente el atributo deshabilitado en un elemento de botón. He visto muchos ejemplos de valores de atributos dinámicos, pero no de atributos en sí mismos. Tengo la siguiente función de renderizado:
render: function() {
var maybeDisabled = AppStore.cartIsEmpty() ? "disabled" : "";
return <button {maybeDisabled}>Clear cart</button>
}
Esto arroja un error de análisis debido al carácter "{". ¿Cómo puedo incluir / omitir el atributo deshabilitado según el resultado (booleano) de AppStore.cartIsEmpty ()?
a[disabled] { pointer-events: none; }
detendrá las acciones en un elemento / componentePuede pasar un booleano al
disabled
atributo.fuente
disabled
atributo en el HTML resultante según el valor que pasó jsfiddle.net/kb3gN/10379Estoy usando React 16 y esto funciona para mí (dónde
bool
está tu prueba):Básicamente, según la prueba (
bool
), devuelve un objeto con el atributo o devuelve un objeto vacío.Además, si necesita agregar u omitir varios atributos, puede hacer esto:
Para un atributo administrado más elaborado, le sugiero que prefabrica el objeto con (o sin) los atributos fuera de JSX.
fuente
Una forma más limpia de hacer atributos dinámicos que funciona para cualquier atributo es
Llame a su componente de reacción como sigue
Consejos :
Podría tener
dynamicAttributes
funciones en un lugar / utilidades comunes e importarlas para usarlas en todos los componentespodría pasar un valor
null
para no representar el atributo dinámicofuente
Puede encontrar algo similar a esto en la documentación.
https://facebook.github.io/react/docs/transferring-props.html
En tu caso podría ser algo como esto
Este código usa ES6, pero creo que tienes la idea.
Esto es genial porque puede pasar muchos otros atributos a este componente y seguirá funcionando.
fuente
La versión que usé fue:
fuente
Una forma sencilla y limpia de hacerlo
discapacitado debe provenir de accesorios como este
fuente
Mucho más limpia que la solución aceptada es la solución que mencionó AnilRedshift, pero que ampliaré.
En pocas palabras, los atributos HTML tienen un nombre y un valor. Como forma abreviada, puede usar el nombre solo para "desactivado", "múltiple", etc. Pero la versión a mano derecha todavía funciona y permite que React funcione de la manera que prefiera.
disabled={disabled ? 'disabled' : undefined}
es la solución más legible.fuente
Primero, simplemente puede verificar
Nota: ** el valor deshabilitado no es String, debe ser booleano .
Ahora para la dinámica. Simplemente puedes escribir
Como puede ver, estoy usando una propiedad deshabilitada y entre llaves puede ser una variable local / var de estado. La variable
disable
contiene valores verdadero / falso.fuente
Esto podría funcionar, el problema con disabled es que no se puede simplemente establecer boolean para ello.
fuente