Presssable 컴포넌트는 RN 앱 개발을 위해 반드시 알아야 하는 컴포넌트입니다. press 상호작용에 관한 기능을 제공하는 컴포넌트이기 때문에 적절히 커스텀해서 버튼 등의 기능을 대신할 수 있습니다. (RN 기본 컴포넌트 Button 컴포넌트는 너무 빈약합니다.)
구성
그러나 Pressable을 재사용 가능한 버튼으로 바로 사용하기에는 난감한 문제들이 있습니다. 버튼 뿐만 아니라 기타 press event에도 대응하기 위해(버튼 그 이상의 목적으로 광범위한 용도를 위해) 만들어졌기 때문입니다.
import React from "react";
import { Pressable, Text } from "react-native";
const ButtonCustom = ({ onPress, text, type, line }) => {
return (
<Pressable
onPress={onPress}
style={({ pressed }) => [
{
// 모든 버튼이 공유하는 고정값
padding: 14,
borderRadius: 10,
borderWidth: 1,
alignItems: "center",
// 받은 인자에 따라 변화하는 값
borderColor: line ? line : color,
backgroundColor: pressed ? color : "#ffffff",
},
]}
>
<Text style={{ color: color }}>{text}</Text>
</Pressable>
);
};
export default ButtonCustom;
사용 예
<View style={{ paddingBottom: 10 }}>
<ButtonCustom
text="도서 상세 정보"
type="primary"
onPress={() => {
Linking.openURL(book && book.url);
}}
/>
</View>
'프로그래밍 > React-Native <JSX>' 카테고리의 다른 글
[React-Native] 깃허브 레포지토리 첫 업로드하기 (0) | 2023.03.14 |
---|---|
[React-Native] Watchman std::__1::system_error: Operation not permitted 접근 권한 버그 해결하기 (0) | 2023.03.05 |
[React-Native] react-native-webview 안드로이드 플랫폼에서 웹뷰를 출력하지 않는 문제 (0) | 2023.02.12 |
[React-Native] react-native-google-singin 앱 심사에 통과하기 위한 앱 서명 인증서(SHA-1) 키 적용하기 (0) | 2023.02.12 |
[Appstore Connect] 앱 스크린샷 업로드 오류를 Curl API를 통해 우회적으로 해결하기 (0) | 2023.02.12 |