Je crée une application Android en utilisant React native et j'ai utilisé le composant TouchableOpacity pour créer des boutons.
J'utilise un composant d'entrée de texte pour accepter le texte de l'utilisateur et le bouton ne doit être activé qu'une fois que l'entrée de texte correspond à une certaine chaîne.
Je peux penser à un moyen de le faire en rendant initialement le bouton sans le wrapper TouchableOpactiy et en effectuant un nouveau rendu avec le wrapper une fois que la chaîne d'entrée correspond.
Mais je suppose qu'il existe une bien meilleure façon de faire cela. Quelqu'un peut-il aider?
la source
disabled
état ne change pas les styles de rendu des enfants.Par conséquent, pour rendre l'état désactivé visible aux utilisateurs, vous devez appliquer un style à l'Text
élément tel que<Text style={{ opacity: 0.5 }}>I'm disabled</Text>
- juste un FYIFais juste ça
la source
<Text>{text}</FontText>
? FontText?Cela semble être le genre de chose qui pourrait être résolue en utilisant un composant d'ordre supérieur. Je peux me tromper parce que j'ai du mal à le comprendre à 100% moi-même, mais peut-être que cela vous sera utile (voici quelques liens) ...
la source
TouchableOpacity reçoit
activeOpacity
. Tu peux faire quelque chose comme çaDonc, s'il est activé, il aura l'air normal, sinon, il ressemblera à toucher sans retour.
la source
cette base native il y a une solution:
la source
Pour désactiver le texte, vous devez définir l'opacité: 0 dans le style de texte comme ceci:
la source
Vous pouvez créer un CustButton avec
TouchableWithoutFeedback
et définir l'effet et la logique souhaités aveconPressIn
,onPressout
ou d'autres accessoires.la source
J'ai pu résoudre ce problème en mettant un conditionnel dans la propriété de style.
la source
Voici mon travail pour cela, j'espère que cela aide:
dans
SignUpStyleSheet.inputStyle
contient le style du bouton lorsqu'il est désactivé ou non, puis dansstyle={this.state.validity ? SignUpStyleSheet.inputStyle : [SignUpStyleSheet.inputAndButton, {opacity: 0.5}]}
J'ajoute la propriété d'opacité si le bouton est désactivé.la source
Vous pouvez activer et désactiver le bouton ou en utilisant la condition ou directement par défaut, il sera désactivé: true
la source
Je pense que le moyen le plus efficace est d'envelopper le touchableOpacity avec une vue et d'ajouter les prop pointerEvents avec une condition de style.
CSS:
la source