我对组件有一个奇怪的问题TouchableOpacity
。我有一个MainButton
需要 2 个道具的组件,item
并且disabled
. 基于disabled
我希望我的 MainButton 组件应用不同样式的道具。问题是当TouchableOpacity
组件重新渲染时,它不会刷新样式。disabled
在重新渲染时正确设置了道具。
奇怪的是,如果我将其更改为 aTouchableHeighlight
它会按预期工作。
有谁知道为什么?这是 TouchableOpacity 中的错误吗?
import React, { Component } from 'react'
import UI from '../styles/ui'
import {
Text,
TouchableOpacity
} from 'react-native'
const ui = new UI()
const styles = ui.styles
class MainButton extends Component {
constructor (props) {
super(props)
this.state = {
disabled : props.disabled,
item: props.item
}
}
componentWillReceiveProps(props) {
this.setState({disabled:props.disabled})
}
render() {
var normalStyles = [styles.mainButton,styles.widthEighty]
var disabledStyle = [styles.mainButton,styles.widthEighty,styles.lowOpacity]
var correctStyles = this.state.disabled ? disabledStyle : normalStyles
console.log(this.state.disabled,'this.state.disabled ? ');
return (
<TouchableOpacity disabled={this.state.disabled} style={correctStyles} accessibilityLabel={this.state.item.name} onPress={this.state.item.onPress.bind(this)}>
<Text style={styles.mediumLabel}>{this.state.item.name}</Text>
</TouchableOpacity>
);
}
}
export { MainButton as default }