React Native 如何为TouchableOpacity组件创建一个禁用的样式?

f2uvfpb9  于 2023-03-19  发布在  React
关注(0)|答案(3)|浏览(99)

如何为TouchableOpacity组件应用禁用的样式?

<TouchableOpacity 
  style={styles.buttonWrapper } 
  onPress={this.userLogin.bind(this)}
  disabled={ !this.state.username || !this.state.password }
>
  <Text style={styles.buttonText}>Login</Text>
</TouchableOpacity>
7uzetpgm

7uzetpgm1#

最简单的方法是使用与禁用 prop 相同的条件。
类似这样的方法应该可以奏效:

style={!this.state.username || !this.state.password ? styles.disabled : styles.buttonWrapper}
pgpifvop

pgpifvop2#

React-NativeReact中的元素禁用样式的最佳方法如下:

style={
    (!this.state.username || !this.state.password)
    ? {...styles.buttonWrapper, ...styles.buttonDisabled}
    : styles.buttonWrapper
  }

查看实际操作:codesandbox

使用这个示例,您不需要为按钮设置重复的样式,只需为styles.buttonDisabled中的禁用按钮定义禁用样式(如backgroundColorcolor)。

o2gm4chl

o2gm4chl3#

你可以用不透明来显示禁用'

const [disabledStyle, setDisabledStyle] = useState<StyleProp<ViewStyle>>();
  useEffect(() => {
    if (disabled) {
      setDisabledStyle({opacity: 0.5});
    } else {
      setDisabledStyle({opacity: 1});
    }
  }, [disabled]);

  return (
    <TouchableOpacity
      disabled={disabled}
      style={[disabledStyle]}
      onPress={() => callBack()}>
      <View>
        <View>{children}</View>
      </View>
    </TouchableOpacity>
  );

'

相关问题