스파르타 코딩클럽

2022.01.02

dev_swH 2022. 1. 2. 16:20

직접 앱 화면을 만들어보라는 예습 과제를 대뜸 받게 되어 엄청난 오류의 향연을 겪으며 맨땅에 헤딩하는 중.

CSS에 익숙해져서 나는 오류가 아주 많았는데, 검색하다가 이런 글을 발견하게 되어 나중에 찬찬히 읽어보려고 첨부.

https://wit.nts-corp.com/2020/03/23/6014

CSS와 리액트 네이티브의 차이를 적어두었는데 그걸 읽으니 '왜 이게 안 돼~!!' 하던 게 많이 해결되었다ㅠㅠ

 

공식문서들은 왜 전부 영어인 거지......

각국의 언어로도 번역해주세요......

그리고 예시 코드가 너무 부족해ㅠㅠㅠㅠㅠㅠ

 

오류가 너무 많이 나니까 급기야 프로그램에게 화를 내며 만지다가 결국 포기!!!!

이게 원래 만들었어야 할 모습

 

이게 내가 하다가 포기한 예습 과제

 

import React from 'react';

import main from './assets/main.png';

import { StyleSheet, Text, View, Image, TouchableOpacity, ScrollView} from 'react-native';

 

export default function App() {

console.disableYellowBox = true;

//return 구문 밖에서는 슬래시 두개 방식으로 주석

return ()

 

}

 

const styles = StyleSheet.create({})

 

이게 리액트 네이티브의 기본 함수 골격이니까 복사해둔 뒤 가져다 쓰라고 강사님이 추천.

 

alingItems는 무조건 flex 영역 안에서만 동작한다.
alignSelf는 flex 영역 안에 없어도 정렬을 움직이게 할 수 있다.

 

이미지는 width와 height로, 혹은 flex로 영역을 잡아줘야만 화면에 나타난다.

 

강사님 그대로 따라하니까 또 잘 된다...최종 완성 코드는 아래로!!

 

import React from 'react';
import main from './assets/main.png';
import { StyleSheet, Text, View, Image, TouchableOpacity, ScrollView} from 'react-native';

export default function App() {
  console.disableYellowBox = true;
  //return 구문 밖에서는 슬래시 두개 방식으로 주석
  return (<ScrollView style={styles.container}>
    <Text style={styles.title}>나만의 꿀팁</Text>
    <Image style={styles.mainImage} source={main} />
    <ScrollView style={styles.middleContainer} horizontal={true}>
      <TouchableOpacity style={styles.middleButtion01}><Text style={styles.middleButtonText}>생활</Text></TouchableOpacity>
      <TouchableOpacity style={styles.middleButtion02}><Text style={styles.middleButtonText}>재테크</Text></TouchableOpacity>
      <TouchableOpacity style={styles.middleButtion03}><Text style={styles.middleButtonText}>반려견</Text></TouchableOpacity>
      <TouchableOpacity style={styles.middleButtion04}><Text style={styles.middleButtonText}>꿀팁 찜</Text></TouchableOpacity>
    </ScrollView>
    <View style={styles.cardContainer}>
      {/* 하나의 카드 영역을 나타내는 view */}
      <View style={styles.card}>
        <Image style={styles.cardImage} source={{uri:"https://storage.googleapis.com/sparta-image.appspot.com/lecture/pizza.png"}}/>
        <View style={styles.cardText}>
          <Text style={styles.cardTitle}>먹다 남은 피자를 촉촉하게!</Text>
          <Text style={styles.cardDesc} numberOfLines={3}>먹다 남은 피자는 수분이 날라가기 때문에 처음처럼 맛있게 먹을 수 없는데요. 이럴 경우 그릇에 물을 받아 전자레인지 안에서 1분 30초에서 2분 정도 함께 돌려주면 촉촉하게 먹을 수 있습니다. 물이 전자레인지 안에서 수증기를 일으키고, 피자에 촉촉함을 더해줍니다.
          </Text>
          <Text style={styles.cardDate}>2020.09.09</Text>
        </View>
      </View>
    </View>

  </ScrollView>)

}

const styles = StyleSheet.create({
  container: {
    backgroundColor: "#fff"
  },
  title: {
    fontSize: 20,
    fontWeight: "700",
    marginTop: 50,
    marginLeft: 20
  },
  mainImage: {
    width: "90%",
    height: 200,
    borderRadius: 10,
    marginTop: 20,
    alignSelf: 'center'
  },
  middleContainer: {
    marginTop: 20,
    marginLeft: 10,
    height: 60
  },
  middleButtion01: {
    width: 100,
    height: 50,
    padding: 15,
    backgroundColor: "#fdc453",
    borderRadius: 15,
    margin: 7
  },
  middleButtion02: {
    width: 100,
    height: 50,
    padding: 15,
    backgroundColor: "#FF8181",
    borderRadius: 15,
    margin: 7
  },
  middleButtion03: {
    width: 100,
    height: 50,
    padding: 15,
    backgroundColor: "#B6F3D7",
    borderRadius: 15,
    margin: 7
  },
  middleButtion04: {
    width: 100,
    height: 50,
    padding: 15,
    backgroundColor: "#FDD3FA",
    borderRadius: 15,
    margin: 7
  },
  middleButtonText: {
    color: "#fff",
    fontWeight: "700",
    textAlign: "center"
  },
  cardContainer: {
    marginTop: 10,
    marginLeft: 10
  },
  card: {
    flex: 1,
    flexDirection: "row",
    margin: 10  
  },
  cardImage: {
    flex: 1,
    width: 100,
    height: 100,
    borderRadius: 10
  },
  cardText: {
    flex: 2,
    //felxDirection은 디폴트가 colum이라 안 적어도 됨.
    marginLeft: 10
  },
  cardTitle: {
    fontSize: 18,
    fontWeight: '700'
  },
  cardDesc: {
    fontSize: 14

  },
  cardDate: {
    fontSize: 11
  }
 
})

 

'스파르타 코딩클럽' 카테고리의 다른 글

2022.01.07  (0) 2022.01.07
2022.01.06  (0) 2022.01.06
2022.01.05  (0) 2022.01.05
2022.01.03  (0) 2022.01.03
2022.01.01  (0) 2022.01.01
2021.12.31  (0) 2021.12.31
2021.12.30  (0) 2021.12.30
2021.12.29  (0) 2021.12.29