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>)
})
!=는 !== 로 사용..