React Native에서 Pressable 구성 요소에 불투명도를 추가하는 방법
13755 단어 mobilejavascriptreactnative
Pressable 구성 요소를 사용하는 방식은 스타일, 모양 및 확장 기능 측면에서 사용자 지정 래퍼/구성 요소를 생성하여 사용자 지정할 수 있다는 것입니다. 또한 이러한 확장 기능을 구현하는 데 사용할 수 있는
onPressIn
, onPressLong
, hitSlop
, delayLongPress
등과 같은 많은 소품을 제공합니다.때때로 제가 좋아하는 한 가지는 터치가 활성화되었을 때 불투명도 피드백을 추가하는 것입니다. 직접 소품 형태로 제공하지 않습니다. TouchableOpacity의 소품activeOpacity과 유사한 기능입니다.
이 게시물에서는 구성 요소에 불투명도 피드백을 추가하기 위해 Pressable을 사용하는 래퍼 구성 요소를 빌드해 보겠습니다.
래퍼 구성 요소 만들기
재사용 가능한 구성 요소가 될 수 있도록 자체 스타일이 없는 사용자 정의 Pressable 구성 요소를 만드는 것부터 시작하십시오.
// Pressable.js
import React, { useCallback } from 'react';
import { Pressable as RNPressable } from 'react-native';
function Pressable({ children, style, ...otherProps }) {
const _style = useCallback(() => [style && style], [style]);
return (
<RNPressable style={_style} {...otherProps}>
{children}
</RNPressable>
);
}
export default Pressable;
지금까지 두 개의 소품만 허용합니다.
children
버튼에 레이블을 추가하는 데 사용됨(React Native의 Text
구성 요소와 같이 사용)...otherProps
는 기본 Pressable 구성 요소에 모든 소품을 전달하는 데 사용됩니다. 이 경우 생성 중인 래퍼 구성 요소는 불투명도 처리만 담당하므로
onPress
와 같은 다른 중요한 소품은 이 래퍼 구성 요소가 사용되는 곳에서 처리하도록 남겨집니다. 버튼을 눌렀음을 표시하려면 Touch indicator on an iOS simulator을 사용해야 합니다.래퍼 구성 요소 사용
래퍼 구성 요소를 현재 상태로 사용하려면 다음과 같이 가져오세요.
import { StyleSheet, Text, View } from 'react-native';
import Pressable from './Pressable';
export default function App() {
return (
<View style={styles.container}>
<Pressable
style={{ borderRadius: 4, backgroundColor: '#FF0063', padding: 8 }}
>
<Text style={styles.text}>Press me</Text>
</Pressable>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center'
},
text: {
fontSize: 24,
color: '#fff'
}
});
Text
및 Pressable
구성 요소에 몇 가지 스타일을 추가해야 합니다.예제 실행
다음은 위의 코드를 실행하여 얻은 결과입니다. 앱 화면에서 구성 요소를 누를 때 시각적 피드백이 없다는 점에 유의하십시오.
래퍼 구성 요소에 불투명도 소품 추가
일부 시나리오에서는 피드백으로 불투명도를 추가하고 사용할 수 있습니다. 예를 들어 버튼을 누르고 있을 때 불투명도를
0.5
로 줄입니다.styles
인수를 허용하도록 pressed
를 확장할 수 있습니다. 구성 요소가 현재 눌러졌는지 여부를 알려주는 부울입니다. 이를 사용하여 스타일의 불투명도 속성 값을 변경할 수 있습니다.래퍼 구성 요소에서
activeOpacity
라는 새 소품을 추가합니다. 이 소품은 0
와 0.99
사이의 숫자를 허용합니다. opacity
속성에서 조건부로 사용되며 구성 요소를 누를 때만 true가 됩니다.구성 요소가 눌린 상태가 아닌 경우 불투명도 값은
1
입니다.import React, { useCallback } from 'react';
import { Pressable as RNPressable } from 'react-native';
function Pressable({ children, style, activeOpacity, ...otherProps }) {
const _style = useCallback(
({ pressed }) => [{ opacity: pressed ? activeOpacity : 1 }, style && style],
[style]
);
return (
<RNPressable style={_style} {...otherProps}>
{children}
</RNPressable>
);
}
export default Pressable;
activeOpacity 값으로 예제 실행
아래 코드 스니펫은 이전 예제를 수정하여
0.5
의 activeOpacity 값을 추가합니다.export default function App() {
return (
<View style={styles.container}>
<Pressable
style={{ borderRadius: 4, backgroundColor: '#FF0063', padding: 8 }}
activeOpacity={0.5}
>
<Text style={styles.text}>Press me</Text>
</Pressable>
</View>
);
}
이 단계 이후의 출력은 불투명도가 예상대로 변경되고 있음을 확인합니다.
결론
Pressable component에는 앱의 요구 사항을 충족하는 광범위하고 사용자 정의된 래퍼를 작성하는 데 사용할 수 있는 많은 소품이 있습니다. 공식 React Native 문서에서 선호되며 터치 기반 이벤트를 처리하는 미래 보장 방법을 제공합니다.
🐙 GitHub에서 전체 코드를 확인하십시오.
🚀 더 많은 React Native 자습서를 보려면 checkout my blog .
Reference
이 문제에 관하여(React Native에서 Pressable 구성 요소에 불투명도를 추가하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/amanhimself/how-to-add-opacity-to-a-pressable-component-in-react-native-20g5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)