Deshabilitar botones en reaccionar nativo

Resuelto Jeff P Chacko asked hace 9 años • 15 respuestas

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?

Jeff P Chacko avatar Oct 29 '15 13:10 Jeff P Chacko
Aceptado

TouchableOpacityse extiende TouchableWithoutFeedback, por lo que puedes usar la disabledpropiedad:

<TouchableOpacity disabled={true}>
  <Text>I'm disabled</Text>
</TouchableOpacity>

React Native TouchableWithoutFeedback #disabled documentación

La nueva API Pressable también tiene una disabledopción:

<Pressable disabled={true}>
  {({ pressed }) => (
    <Text>I'm disabled</Text>
  )}
</Pressable>
Julien Deniau avatar Mar 30 '2016 12:03 Julien Deniau

solo haz esto

<TouchableOpacity activeOpacity={disabled ? 1 : 0.7} onPress={!disabled && onPress}>
  <View>
    <Text>{text}</Text>
  </View>
</TouchableOpacity>
Tallboy avatar Jan 03 '2016 00:01 Tallboy

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>
Anja Ishmukhametova avatar Mar 21 '2018 16:03 Anja Ishmukhametova