강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

yeong님의 프로필 이미지
yeong

작성한 질문수

아바타 커뮤니티앱 만들기 (React Native Expo)

[3-0] 공통 버튼 컴포넌트 구현하기

CustomButton 코드 버튼 관련 질문

작성

·

9

0

버전 차이 (RN StyleSheet, Expo)의 문제거나 안드로이드의 문제인지는 모르겠지만 강의 중 코드로 작성하면 아래와 같은 문제가 나옵니다.

screenshot.png

Pressable과 Text에 backgroundColor와 color가 스타일링이 되는 방식이나 Button 요소에 opacity가 적용이 되지 않는 듯한 이슈인 것 같아서 아래와 같이 해결했습니다.

 

return (
  <Pressable
    style={({ pressed }) => [
      styles.container,
      styles[size],
      { backgroundColor: styles[variant].backgroundColor },
      pressed && styles.pressed,
    ]}
    {...props}
  >
    <Text style={[styles.text, { color: styles[variant].color }]}>
      {label}
    </Text>
  </Pressable>
);

...

const styles = StyleSheet.create({
  container: {
    borderRadius: 8,
    justifyContent: "center",
    alignItems: "center",
  },
  text: {
    fontSize: 14,
    fontWeight: "bold",
  },
  // size
  large: {
    width: "100%",
    height: 44,
  },
  medium: {},
  // variant
  filled: {
    backgroundColor: colors.ORANGE_600,
    color: colors.WHITE,
  },
  // Pressable props
  pressed: {
    opacity: 0.8,
  },
});

저는 강의 코드 대신 이렇게 해서 해결은 되었는데 혹시 이 이슈가 일어나는 이유와 앞으로 코드 복잡도가 어떻게 될 지는 모르겠지만 CustomButton이 그렇게 복잡해지진 않을 것 같은데 방법이 최선일지, 아니면 더 개선할 점이 있는지 궁금합니다.

답변 1

0

Kyo님의 프로필 이미지
Kyo
지식공유자

pressable에는 백그라운드, text에는 컬러만 적용되도록 해주셨네요. 좋은방법인것 같습니다👍

yeong님의 프로필 이미지
yeong

작성한 질문수

질문하기