禁用按钮on native native

Jef*_*cko 130 react-native

我正在使用本机做一个Android应用程序,我使用了TouchableOpacity组件来创建按钮.
我使用文本输入组件来接受来自用户的文本,并且只有在文本输入与特定字符串匹配时才应启用该按钮.
我可以通过最初渲染没有TouchableOpactiy包装器的按钮并在输入字符串匹配时使用包装器重新渲染来想办法.
但我猜测有更好的方法可以做到这一点.有人可以帮忙吗?

Jul*_*iau 257

TouchableOpacity范围TouchableWithoutFeedback,所以你可以使用disabled属性:

<TouchableOpacity disabled={true}>
  <Text>I'm disabled</Text>
</TouchableOpacity>
Run Code Online (Sandbox Code Playgroud)

React Native TouchableWithoutFeedback #disabled文档

  • 请注意,`disabled`状态不会更改子渲染样式,因此为了使用户可以看到禁用状态,您需要将样式应用于`Text`元素,例如`<Text style = {{opacity:0.5}我被禁用了</ Text>` - 只是一个FYI (8认同)

Tal*_*boy 40

就这样做吧

<TouchableOpacity activeOpacity={disabled ? 1 : 0.7} onPress={!disabled && onPress}>
  <View>
    <Text>{text}</Text>
  </View>
</TouchableOpacity>
Run Code Online (Sandbox Code Playgroud)

  • onPress不期望一个布尔值 (8认同)

Anj*_*ova 7

这个原生库有解决方案:

<Button
    block
    disabled={!learnedWordsByUser.length}
    style={{ marginTop: 10 }}
    onPress={learnedWordsByUser.length && () => {
      onFlipCardsGenerateNewWords(learnedWordsByUser)
      onFlipCardsBtnPress()
    }}
>
    <Text>Let's Review</Text>
</Button>
Run Code Online (Sandbox Code Playgroud)


小智 5

所以很容易禁用 React Native 中的任何按钮

<TouchableOpacity disabled={true}>
    <Text> 
          This is disabled button
   </Text>
</TouchableOpacity>
Run Code Online (Sandbox Code Playgroud)

禁用是反应本机中的一个道具,当您将其值设置为“true”时,它将禁用您的按钮

快乐烹饪