inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

비전공자를 위한 진짜 입문 올인원 개발 부트캠프

메인 화면 구현 - 3

에뮬레이터에 화면 흰색만나오는 문제

321

sehun910124

작성한 질문수 10

1

import { API_URL } from "./config/constants.js";
import avatarImg from "./assets/icons/avatar.png";
import React from "react";
import {
  StyleSheet,
  Text,
  View,
  Image,
  ScrollView,
  Dimensions,
  TouchableOpacity,
  Alert,
} from "react-native";
import { GestureHandlerRootView } from "react-native-gesture-handler";
import Carousel from "react-native-reanimated-carousel";

import axios from "axios";
import dayjs from "dayjs";
import relativeTime from "dayjs/plugin/relativeTime";
import "dayjs/locale/ko";

dayjs.extend(relativeTime);
dayjs.locale("ko");

export default function App() {
  const [products, setProducts] = React.useState([]);
  const [banners, setBanners] = React.useState([]);

  React.useEffect(() => {
    axios
      .get(`${API_URL}/products`)
      .then((result) => {
        const products = result.data.products;
        setProducts(products);
      })
      .catch((error) => {
        console.log("error :", error);
      });

    axios
      .get(`${API_URL}/banners`)
      .then((result) => {
        const banners = result.data.banners;
        setBanners(banners);
      })
      .catch((error) => {
        console.log("error :", error);
      });
  }, []);

  return (
    <GestureHandlerRootView>
      <View style={styles.container}>
        <ScrollView>
          <Carousel
            data={banners}
            width={Dimensions.get("window").width}
            height={200}
            autoPlay={true}
            sliderWidth={Dimensions.get("window").width}
            itemWidth={Dimensions.get("window").width}
            itemHeight={200}
            renderItem={(obj) => {
              return (
                <TouchableOpacity
                  onPress={() => {
                    Alert.alert("배너 클릭");
                  }}
                >
                  <Image
                    style={styles.bannerImage}
                    source={{ uri: `${API_URL}/${obj.item.imageUrl}` }}
                    resizeMode="contain"
                  />
                </TouchableOpacity>
              );
            }}
          />
          <Text style={styles.headline}>판매되는 상품들!</Text>
          <View style={styles.productList}>
            {products.map((product, index) => {
              return (
                <View key={index} style={styles.productCard}>
                  {product.soldout === 1 && <View style={styles.productBlur} />}
                  <View>
                    <Image
                      style={styles.productImg}
                      source={{
                        uri: `${API_URL}/${product.img_url}`,
                      }}
                      resizeMode={"contain"}
                    />
                  </View>
                  <View style={styles.productContents}>
                    <Text style={styles.productName}>{product.name}</Text>
                    <Text style={styles.productPrice}>{product.price}원</Text>
                    <View style={styles.productFooter}>
                      <View style={styles.productSeller}>
                        <Image
                          style={styles.productAvatar}
                          source={avatarImg}
                        />
                        <Text style={styles.productSellerName}>
                          {product.seller}
                        </Text>
                      </View>
                      <Text style={styles.productDate}>
                        {dayjs(product.created_at).fromNow()}
                      </Text>
                    </View>
                  </View>
                </View>
              );
            })}
          </View>
        </ScrollView>
      </View>
    </GestureHandlerRootView>
  );
}

const styles = StyleSheet.create({
  headline: {
    fontSize: 24,
    fontWeight: "800",
    marginTop: 10,
    marginBottom: 10,
  },
  container: {
    flex: 1,
    backgroundColor: "#fff",
    paddingTop: 32,
    margin: 10,
  },
  productCard: {
    width: "100%",
    borderColor: "rgb(230,230,230)",
    borderWidth: 1,
    borderRadius: 16,
    backgroundColor: "white",
    marginBottom: 10,
  },
  productBlur: {
    position: "absolute",
    top: 0,
    bottom: 0,
    right: 0,
    left: 0,
    backgroundColor: "#ffffffaa",
    zIndex: 999,
  },
  productImg: {
    width: "100%",
    height: 210,
  },
  productContents: {
    padding: 8,
  },
  productSeller: {
    flexDirection: "row",
  },
  productAvatar: {
    width: 24,
    height: 24,
  },
  productFooter: {
    flexDirection: "row",
    justifyContent: "space-between",
    alignItems: "center",
    marginTop: 12,
  },
  productName: {
    fontSize: 14,
  },
  productPrice: {
    fontSize: 16,
    fontWeight: "600",
    marginTop: 8,
  },
  productSellerName: {
    fontSize: 14,
  },
  productDate: {
    fontSize: 14,
  },
  productList: {
    alignItems: "center",
  },
  bannerImage: {
    width: "100%",
    height: 200,
  },
});

 

스크린샷 2024-01-17 오후 3.22.29.png

어떤 오류메세지도 뜨지않고,

에뮬레이터에 화면이 출력되지않는 문제가 발생합니다.

Carousel을 적용하기전에는 화면 잘 출력되었는데,

Carousel을 적용하니 화면이 출력되지않네요..

Error: PanGestureHandler must be used as a descendant of GestureHandlerRootView. Otherwise the gestures will not be recognized. See https://docs.swmansion.com/react-native-gesture-handler/docs/installation for more details.

이러한 오류가 발생해서
GestureHandlerRootView 태그로
최상단에 묶어주니 저 오류는 사라졌는데,

애뮬레이터의 화면이 출력되지 않는 문제가 발생합니다.

서버는 잘 연결되어있는걸 확인햇습니다..

뭐가문제일까요



HTML/CSS javascript react node.js react-native 머신러닝 express tensorflow

답변 2

1

sehun910124

해결했습니다!

0

윤건호

혹시 어떻게 해결하셨을까요...? 저도 같은 문제를 겪고 있습니다 ㅠㅠ

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. sehun910124님.

React Native 강의 수강 중 Carousel 적용 후 화면이 제대로 출력되지 않는 문제에 대해 질문해주셨습니다. 해당 문제를 접하는 다른 수강생들의 유사한 경우를 조사해본 결과, React Native에서 사용하는 Carousel 컴포넌트에 관련된 질문들 중 이와 관련하여 다음과 같은 답변을 찾을 수 있었습니다:

  1. react native snap carousel 오류 문의

    • 이 게시물에서는 react-native-snap-carousel 라이브러리를 사용할 때 발생하는 오류와 해결 방법에 대해 설명합니다. 해당 라이브러리에서 ViewPropTypes 관련 문제가 발생했을 때의 해결법을 제시합니다. 비록 직접적으로 Carousel이 나타나지 않는 문제를 다루지는 않지만, Carousel 관련 오류를 해결하는 데 참고가 될 수 있습니다.
  2. 배너가 안보여요..ㅠㅠ

    • 이 질문에서는 Carousel이 제대로 나타나지 않는 문제를 다루고 있습니다. 질문자가 코드에서 발생한 실수를 찾지 못해 도움을 요청했으며, 지식공유자가 오타로 인해 banners 데이터가 정의되지 않은 문제를 지적했습니다.
  3. 배너가 나오지 않습니다.

    • 이 경우도 배너, 즉 Carousel이 화면에 나타나지 않는 문제가 제기되었습니다. 지식공유자는 banners 데이터가 제대로 들어가지 않은 것 같다고 언급하며 banners 및 관련 이미지 스타일에 주목할 것을 권장합니다. 이 답변은 Carousel 데이터 처리와 관련된 문제점을 진단할 때 유용하게 활용할 수 있습니다.

질문자님의 코드에서 Carousel 컴포넌트 적용 후 발생하는 문제와 관련하여 다음 사항들을 확인해보시면 도움이 될 수 있습니다:
- 서버로부터 받은 데이터(products, banners)가 정상적으로 Carousel에 전달되고 있는지 확인하세요.
- Carousel 컴포넌트의 설정이 정확한지, sliderWidthitemWidth 등의 속성 값이 적절하게 설정되었는지 확인하세요.
- 오류가 없는 경우, Carousel에 도달하는지 혹은 렌더링 중에 어떠한 오류가 발생하는지 확인하기 위해 각 상태의 변화 또는 렌더링 과정에서 발생하는 모든 단계를 콘솔 로그로 찍어보세요.
- GestureHandlerRootView를 올바르게 사용하고 있는지, 이 컴포넌트 밖에서 PanGestureHandler는 사용되지 않고 있는지 점검하세요.

위 링크를 참조하여 유사 문제의 해결 방법을 적용해 보시고, 혹은 주신 코드에서 디버깅을 통하여 문제를 해결해 보시길 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

[해결]그랩님 답변 주세요.

0

160

2

그랩님의 답변을 기다립니다/102강 전반적인 에러

0

141

2

[그랩님께]101강 안드로이드 에러들(Key prop)해결방법 궁금합니다.

0

123

2

[재질문][그랩님 답변 부탁드립니다]101강

0

140

2

[그랩님 답변 부탁드립니다]101강 Axios 에러와 502 Bad Gateway 질문

0

96

2

Ngrok 설치 후 forwarding Url 에러

0

133

2

[그랩님께,Ngrok 악성코드 인식 해결방법]질문 드립니다.

0

217

2

Ngrok 설치 후 forwarding Url로 연결 불가

0

134

1

그랩님,[꼭] 답변 부탁드립니다.

0

65

1

[꼭][[꼭] 그랩님, 답변 부탁드립니다], Failed to load resource: the server responded with a status of 404 (Not Found) 상품 상세 페이지 질문입니다.

0

149

1

6강/7강 수업

0

50

1

그랩님, 상품 상세 페이지 에러와 의문점 질문드립니다.

0

98

2

그랩님, 해결되지 않은 에러 메시지 [꼭] 답변 부탁 드립니다.

0

134

2

[재 질문]Cannot read properties of undefined (reading 'map') TypeError: Cannot read properties of undefined (reading 'map') 에러 해결 어떻게 하나요?

0

88

1

Cannot read properties of undefined (reading 'map') TypeError: Cannot read properties of undefined (reading 'map') 에러 해결 어떻게 하나요?

0

127

2

일반적인 css 꾸미기에서 width와 height의 값?

0

90

2

Windows에서의 업로드 후 홈화면 상품이미지 오류 해결방법

0

193

1

그랩마켓 웹화면 구현하기 -2 질문입니다.

0

119

1

react에 반영이 되지 않습니다.

0

236

1

터미널 npm install -g create-react-app 작성 후 오류

0

419

1

create-react-app my app 실행 시 에러

0

354

2

포스트맨 질문

0

99

1

<꼭 답변 부탁 드립니다>그랩선생님, [컴포넌트 사용하기] 강의에서 질문 있습니다.

0

260

2

그랩선생님, 질문 답변 부탁 드립니다.vscode에서 npm install -g create-react-app 입력 후 에러 입니다.

0

473

2