Estou criando um aplicativo Android usando o React Native e usei o componente TouchableOpacity para criar botões.
Eu uso um componente de entrada de texto para aceitar o texto do usuário e o botão só deve ser ativado quando a entrada de texto corresponder a uma determinada sequência.
Posso pensar em uma maneira de fazer isso renderizando inicialmente o botão sem o wrapper TouchableOpactiy e renderizando novamente com o wrapper quando a sequência de entrada corresponder.
Mas acho que existe uma maneira muito melhor de fazer isso. Alguém pode ajudar?
react-native
Jeff P Chacko
fonte
fonte
disabled
estado não muda os estilos de processamento filho para que, a fim de tornar o estado desativado visível para os usuários que você precisa para aplicar um estilo para oText
elemento como<Text style={{ opacity: 0.5 }}>I'm disabled</Text>
- apenas um FYIApenas faça isso
fonte
<Text>{text}</FontText>
? FontText?Esse parece ser o tipo de coisa que poderia ser resolvida usando um componente de ordem superior. Eu posso estar errado, porque estou lutando para entender 100% eu mesmo, mas talvez seja útil para você (aqui estão alguns links) ...
fonte
TouchableOpacity recebe
activeOpacity
. Você pode fazer algo assimPortanto, se estiver ativado, parecerá normal, caso contrário, será semelhante ao toque sem feedback.
fonte
nesta base nativa existe solução:
fonte
Para desabilitar o Texto, você deve definir a opacidade: 0 no estilo Texto, assim:
fonte
Você pode construir um CustButton com
TouchableWithoutFeedback
, e definir o efeito ea lógica que quiser comonPressIn
,onPressout
ou outros adereços.fonte
Consegui consertar isso colocando uma condicional na propriedade style.
fonte
Aqui está o meu trabalho para isso, espero que ajude:
in
SignUpStyleSheet.inputStyle
mantém o estilo do botão quando ele está desabilitado ou não; em seguida,style={this.state.validity ? SignUpStyleSheet.inputStyle : [SignUpStyleSheet.inputAndButton, {opacity: 0.5}]}
adiciono a propriedade opacity se o botão estiver desabilitado.fonte
Você pode ativar e desativar o botão ou, usando a condição ou diretamente por padrão, será desativado: true
fonte
Eu acho que a maneira mais eficiente é envolver o touchableOpacity com uma view e adicionar o prop pointerEvents com uma condição de estilo.
CSS:
fonte