Deshabilitar botones en reaccionar nativo
Estoy creando una aplicación para Android usando reaccionar nativo y he usado el componente TouchableOpacity para crear botones.
Utilizo un componente de entrada de texto para aceptar texto del usuario y el botón solo debe habilitarse una vez que la entrada de texto coincida con una determinada cadena.
Se me ocurre una forma de hacer esto renderizando inicialmente el botón sin el contenedor TouchableOpactiy y volviendo a renderizarlo con el contenedor una vez que la cadena de entrada coincida.
Pero supongo que hay una manera mucho mejor de hacer esto. ¿Alguien puede ayudar?
TouchableOpacity
se extiende TouchableWithoutFeedback
, por lo que puedes usar la disabled
propiedad:
<TouchableOpacity disabled={true}>
<Text>I'm disabled</Text>
</TouchableOpacity>
React Native TouchableWithoutFeedback #disabled documentación
La nueva API Pressable también tiene una disabled
opción:
<Pressable disabled={true}>
{({ pressed }) => (
<Text>I'm disabled</Text>
)}
</Pressable>
solo haz esto
<TouchableOpacity activeOpacity={disabled ? 1 : 0.7} onPress={!disabled && onPress}>
<View>
<Text>{text}</Text>
</View>
</TouchableOpacity>
esta base nativa tiene solución:
<Button
block
disabled={!learnedWordsByUser.length}
style={{ marginTop: 10 }}
onPress={learnedWordsByUser.length && () => {
onFlipCardsGenerateNewWords(learnedWordsByUser)
onFlipCardsBtnPress()
}}
>
<Text>Let's Review</Text>
</Button>