본문으로 건너뛰기

ZSPressable

커스텀 스타일과 애니메이션이 적용된 버튼 컴포넌트를 제공합니다.

이 컴포넌트는 사용자의 클릭 및 롱클릭 이벤트를 다루며, 배경 색상, 애니메이션 효과, 그림자 레벨 등을 쉽게 설정할 수 있도록 설계되었습니다.

기본 사용법

import React from 'react';
import { StyleSheet, Text } from 'react-native';
import ZSPressable from '@0610studio/zs-ui';

export default function App() {
return (
<ZSPressable
style={{
backgroundColor: background.neutral,
paddingVertical: 20,
paddingHorizontal: 10,
justifyContent: 'center',
alignItems: 'center',
borderRadius: 20,
}}
onPress={useCallback(() => {
console.log('ZSPressable onPress');
}, [])}
fullWidth
>
<ZSText typo="subTitle.1">ZSPressable 버튼</ZSText>
</ZSPressable>
);
}

Props

기본 속성

PropTypeDefaultDescription
onPress(value?: any) => voidRequired버튼 클릭 시 실행될 콜백 함수입니다.
onLongPress(value?: any) => voidundefined버튼을 길게 누를 때 실행될 콜백 함수입니다.
pressedBackgroundColorstring'rgba(180, 180, 180, 0.1)'눌렸을 때 버튼의 배경 색상입니다.
pressedBackgroundBorderRadiusnumber16눌렸을 때의 버튼의 둥근 모서리 반경입니다.
flexnumberundefined버튼의 flex 속성입니다.
minWidthnumberundefined버튼의 최소 너비를 지정합니다.
isAnimationbooleantrue버튼에 애니메이션 효과를 적용할지 여부를 설정합니다.
elevationLevelShadowLevel0버튼의 그림자 깊이를 설정합니다. (0~9 단계)
fullWidthbooleanfalse버튼이 부모 요소의 전체 너비를 차지하도록 설정합니다.

추가 Props

ZSPressableViewProps를 확장하여 기본 React Native View에서 사용하는 모든 속성을 지원합니다.


ShadowLevelAnimatedWrapper

ZSPressable은 내부적으로 AnimatedWrapper를 사용하여 플랫폼별 그림자 효과를 제공합니다. iOS와 Android에 따라 그림자 스타일이 적절히 적용됩니다.

LeveliOS ShadowAndroid Elevation
0없음0
1얕음1
.........
9깊음9