#react-native
Вопрос:
Поэтому я использую нажимаемый компонент в react-native вместо кнопки, потому что я слышал, что у него много ограничений в отношении стиля. Я также пробовал использовать TouchableHighlight, но он не работает для меня лучше, так как в моем компоненте уже есть некоторые настройки стиля и позиционирования
class randomComponent extends Component {
render() {
return (
<Pressable>
<Text>Hello World</Text>
</Pressable>
)
}
tl:dr Как мне выделить нажимной компонент? Спасибо
Ответ №1:
Решение:
import { TouchableOpacity } from 'react-native'
TouchableOpacity лучше подходит для разработчиков, имеющих опыт работы с веб-фоном и дизайном.
Ответ №2:
Вам нужно использовать переменную состояния, чтобы сохранить pressed
состояние и соответствующим образом изменить стиль компонента
class randomComponent extends Component {
constructor(props) {
super(props)
this.state = {
pressed: false
}
}
render() {
return (
<Pressable
onPressIn={() => this.setState({pressed: true})}
onPressOut={() => this.setState({pressed: false})}
style={this.state.pressed ? styles.pressed : {}}
>
<Text>Hello World</Text>
</Pressable>
)
}
const styles = StyleSheet.create({
pressed: {
backgroundColor: 'red'
}
})
Ответ №3:
Вы можете просто использовать стиль «render prop» вместо этого, если хотите получить доступ к нажатому состоянию без необходимости хранить свою собственную useState
переменную.
Из документов:
<Pressable
style={({ pressed }) => [
{
backgroundColor: pressed
? 'rgb(210, 230, 255)'
: 'white'
},
styles.wrapperCustom
]}>
{({ pressed }) => (
<Text style={styles.text}>
{pressed ? 'Pressed!' : 'Press Me'}
</Text>
)}
</Pressable>