react + native = reactnative
react = facebook에서 만든 웹기술
*자바스크립트로만 작성 가능
Android & Ios로 번역해주는 도구
*Expo client라는 앱으로 실시간 확인 가능
npm install -g expo-cli
- 프로젝트 생성
- 프로젝트 실행
- 프로젝트 빌드 등등 여러 기능을 사용할 수 있음
동일 network상에서 확인하며 작업할 수 있다
expo login --username "사용자이름"
expo init 프로젝트 명
expo start
Expo 폴더 구조

npm install -g yarn
js에서 html처럼 사용하는 문법
<View style={styles.container}>
<Text>Open up Ahellongdapp!</Text>
<StatusBar style="auto" />
</View>
경고창 안나오게 하는 코드
console.
disableYellowBox= true
import { StatusBar } from 'expo-status-bar';
import { StyleSheet, Text, View } from 'react-native';
태그 사용법은 공식문서를 참조
https://reactnative.dev/docs/view
<image/> 두가지 사용법assets 폴더에서 가져와서 사용하기 vs 외부 링크로 가져와서 사용하기
import img from "./assets/img.png"
<Image source ={img}>
외부이미지
<Image source = {{uri: 주소} }
StyleSheet.creat()로 class 생성
const styles = StyleSheet.create({
container: {
//영역을 잡는 속성입니다. 따로 자세히 다룹니다.
//flex: 1은 전체 화면을 가져간다는 뜻입니다
flex: 1,
//영역의 배경 색을 결정합니다
backgroundColor: '#fff',
//아래 두 속성은 영역 안의 컨텐츠들의 배치를 결정합니다.
//flex를 자세히 다룰때 같이 자세히 다룹니다
justifyContent:"center",
alignContent:"center"
},
textContainer: {
//영역의 바깥 공간 이격을 뜻합니다(하단 이미지 참조)
margin:10,
//영역 안의 컨텐츠 이격 공간을 뜻합니다(하단 이미지 참조)
padding: 10,
//테두리의 구부러짐을 결정합니다. 지금 보면 조금 둥글죠?
borderRadius:10,
//테두리의 두께를 결정합니다
borderWidth:2,
//테두리 색을 결정합니다
borderColor:"#000",
//테구리 스타일을 결정합니다. 실선은 solid 입니다
borderStyle:"dotted",
},
textStyle: {
//글자 색을 결정합니다. rgb, 값 이름, 색상코드 모두 가능합니다
color:"red",
//글자의 크기를 결정합니다
fontSize:20,
//글자의 두께를 결정합니다
fontWeight:"700",
//가로기준으로 글자의 위치를 결정합니다
textAlign:"center"
},
Image: {
//Image 태그는 항상 있어야함..
//컨텐츠의 넓이
width: '90%',
//컨텐츠의 높이
height: 200,
});
👉 리액트 네이티브, 즉 현재 만들고 있는 앱에서의 모듈 시스템은 어떠할까요?
App.js를 다룰 때 이런 정의를 내린적이 있습니다.
1) 간단히는 App.js는 앱의 화면을 그려주는 커다란 함수입니다. 또는!
2) 자세히는 App.js는 리액트 네이티브 라이브러리 그리고 Expo에서 제공해주는 기능들을 사용하여 화면을 그려주는 커다란 함수입니다.
그리고 App.js는 모듈 시스템에 의해 내보내지고 있습니다.
export default function App() { ... }
👉 즉, 화면을 그리는 함수(여기선 App()을 가르킵니다)가 내보내져서 어디선가 사용이 되며, 사용이 되는 것 즉 화면을 그리게 된다는 뜻입니다.
간단히 정리해보면, 우리가 만든 화면을 그리는 함수들은 리액트 네이티브로 전달되어(내보내져서 == export) 화면을 최종적으로 그린다는 것으로 이해하면 충분합니다.
tip.map((content,i)=>{
return (<View style={styles.card} key={i}>
<Image style={styles.cardImage} source={{uri:content.image}}/>
<View style={styles.cardText}>
<Text style={styles.cardTitle} numberOfLines={1}>{content.title}</Text>
<Text style={styles.cardDesc} numberOfLines={3}>{content.desc}</Text>
<Text style={styles.cardDate}>{content.date}</Text>
</View>
</View>)
})
!=는 !== 로 사용..