Eu quero incluir / omitir dinamicamente o atributo disabled em um elemento de botão. Já vi muitos exemplos de valores de atributos dinâmicos, mas não dos próprios atributos. Tenho a seguinte função de renderização:
render: function() {
var maybeDisabled = AppStore.cartIsEmpty() ? "disabled" : "";
return <button {maybeDisabled}>Clear cart</button>
}
Isso gera um erro de análise por causa do caractere "{". Como posso incluir / omitir o atributo desativado com base no resultado (booleano) de AppStore.cartIsEmpty ()?
a[disabled] { pointer-events: none; }
irá parar as ações em um elemento / componenteVocê pode passar um booleano para o
disabled
atributo.fonte
disabled
atributo no HTML resultante, dependendo do valor que você passou jsfiddle.net/kb3gN/10379Estou usando o React 16 e isso funciona para mim (onde
bool
está o seu teste):Basicamente, com base em test (
bool
), você retorna um objeto com o atributo ou retorna um objeto vazio.Além disso, se você precisar adicionar ou omitir vários atributos, poderá fazer o seguinte:
Para atributos gerenciados mais elaborados, sugiro que você pré-fabricar o objeto com (ou sem) os atributos fora do JSX.
fonte
Uma maneira mais limpa de fazer atributos dinâmicos que funciona para qualquer atributo é
Chame seu componente de reação como seguir
Dicas:
Você poderia ter
dynamicAttributes
função em um local / utilitários comum e importá-lo para usá-lo em todos os componentesvocê poderia passar valor
null
para não renderizar o atributo dinâmicofonte
Você pode encontrar algo semelhante a isso na documentação.
https://facebook.github.io/react/docs/transferring-props.html
No seu caso poderia ser algo assim
Este código está usando ES6, mas acho que você teve a ideia.
Isso é legal porque você pode passar muitos outros atributos para este componente e ainda funcionará.
fonte
A versão que usei foi:
fonte
Uma maneira simples e limpa de fazer isso
desativado deve vir de suportes como este
fonte
Muito mais limpa do que a solução aceita é a solução que o AnilRedshift mencionou, mas que irei expandir.
Simplificando, os atributos HTML têm um nome e um valor. Como abreviação, você pode usar o nome apenas para "desativado", "múltiplo", etc. Mas a versão extensa ainda funciona e permite que o React funcione de sua maneira preferida.
disabled={disabled ? 'disabled' : undefined}
é a solução mais legível.fonte
Primeiro você pode simplesmente verificar
Nota: ** o valor desativado não é String, deve ser Booleano .
Agora para dinâmica. Você pode simplesmente escrever
Como você pode ver, estou usando a propriedade disabled e, entre chaves, pode ser variável local / var de estado. A variável
disable
contém valores verdadeiro / falso.fonte
Isso pode funcionar, o problema com desativado é que não se pode simplesmente definir o booleano para ele.
fonte