У меня странная проблема с компонентом TouchableOpacity
. У меня есть MainButton
компонент, который принимает 2 реквизита, item
и disabled
. Основываясь на опоре disabled
, я хочу, чтобы мой компонент MainButton применил другой стиль. Проблема в том, что когда компонент TouchableOpacity
повторно визуализирует, он не обновляет стиль. Опора disabled
правильно установлена при повторном рендеринге.
Что делает это странным, так это то, что если я поменяю его на TouchableHeighlight
, он будет работать, как ожидалось.
Кто-нибудь знает почему? Это ошибка в 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 }