Pressable (버튼 Wrapper)

Tags
button
Column
Touchable을 대신하여 Pressable을 쓰는 것이 권장됨.
Pressable은 정의된 자식요소로부터 다양한 단계의 Press 상호작용을 탐지할 수 있는 Core Component Wrapper다.
import React, { useState } from 'react'; import { Pressable, StyleSheet, Text, View } from 'react-native'; import {getStatusBarHeight} from 'react-native-status-bar-height' const App = () => { const [timesPressed, setTimesPressed] = useState(0); let textLog = ''; if (timesPressed > 1) { textLog = timesPressed + 'x onPress'; } else if (timesPressed > 0) { textLog = 'onPress'; } return ( <View style={styles.container}> <Pressable onPress={() => { setTimesPressed((current) => current + 1); }} style={({ pressed }) => [ { backgroundColor: pressed ? 'rgb(210, 230, 255)' : 'white' }, styles.wrapperCustom ]}> {({ pressed }) => ( <Text style={styles.text}> {pressed ? 'Pressed!' : 'Press Me'} </Text> )} </Pressable> <View style={styles.logBox}> <Text testID="pressable_press_console">{textLog}</Text> </View> </View> ); }; const styles = StyleSheet.create({ text: { fontSize: 16 }, wrapperCustom: { borderRadius: 8, padding: 6, }, logBox: { padding: 20, margin: 10, borderWidth: StyleSheet.hairlineWidth, borderColor: '#f0f0f0', backgroundColor: '#f9f9f9' }, container:{ //상태바에 가려지는 것 방지 paddingTop:getStatusBarHeight(), flex:1 }, }); export default App;