2017-10-06 760 views
0

我正在尝试添加禁用按钮功能的功能。我希望按钮不可点击,并且透明度较低。当我点击按钮时,我在外部组件中设置了该状态,该按钮应该被禁用(这是在等待来自服务器的响应时)。不可点击的部分工作,但我不能让它在点击后降低其不透明度。无法在TouchableOpacity上设置禁用的不透明度

组件

<MyButton onPress={ this.setWaiting.bind(this) } 
      disabled={ this.state.waiting } /> 

myButton的

const disabledStyle = { 
    opacity: 0.2, 
} 

.... 

<TouchableOpacity 
    style={ [styles.button, props.disabled && disabledStyle] } 
    onPress={ onPress } 
    disabled={ props.disabled }> 
     .... 
</TouchableOpacity> 

如果我改变disabledStyle到,虽然设置另一个背景颜色,它按预期工作,并改变背景颜色,而disabled是真实的。

+2

如果不是太不方便了,你可以使用'{[styles.button,{不透明度:props.disabled? 0.2:1}]}。当按钮未被禁用时,将'1'更改为所需的不透明度。 – Dan

+0

@丹仍然不起作用,并提供与以前相同的结果。 –

+0

你可以验证'this.state.waiting'实际上是在修改MyButton的道具吗?以下是第一条评论中提到的样式的简单示例 - https://snack.expo.io/ry79Yn43b – Dan

回答