지금까지 리액트 라이브러리를 이용하여 브라우저에서 돌아가는 웹 어플리케이션을 만들었는데, 리액트 네이티브는 모바일 어플리케이션을 만드는 라이브러리이다.
리액트는 플랫폼에 구애 받지 않음 : 웹 + 모바일 둘다 사용 가능하다는 말
packge.json 에 React-dom이 있을텐데 이것때문에 Web App 어플 개발이 가능
React + React Native => 모바일 어플리케이션 개발 가능
리액트 네이티브 아키텍쳐
Expo 사용 방법
npm install --global eas-cli
엔터sudo npm install --global ese-cli
npx create ...
엔터치기eas init ...
터미널에 입력해서 expo 웹사이트에 연결, 배포할 수 있다.eas update
expo에 작업한 것이 그대로 올라간다.<View> : <div> 태그와 같다. 기본적으로 flex 박스이다.
// 기본 속성 - display : flex , flex-direction : column
<Text> : 글자를 쓸 때 반드시 감싸줘야한다.
<Image> : <img> 태그와 같다.
// 사용방법(폴더에 이미지 파일이 있을 경우) : <Image source={require("경로")} /> , require는 노드에서 제공해주는 메서드이다.
// 사용방법(폴더에 이미지 파일이 없을 경우) : <Image source={{uri:"경로"}} />
<TextInput> : <input> 태그와 같다.
// 사용방법 : <TextInput style={{width: "100%", backgroundColor: "grey"}} value={text} onchangeText={setText} />
// 이벤트 객체는 네이티브에서 제공하지 않는다.
const onChangeText = (text) => {
setText(text);
};
<ScrollView> : 브라우저에서 기본적으로 내용이 화면을 벗어나면 스크롤이 생기지만 네이티브에서는 그렇지 않기 때문에 써줘야하는 컴포넌트이다.
<ScrollView> 의 스타일링은 차이점이 있다. style 속성이 아닌 contentContainerStyle 속성을 사용해야 한다.
사용방법 : <ScrollView contentContainerStyle={style.container}><Text>Hello</Text></ScrollView>
<View> 대신 <SafeAreaView> 컴포넌트를 사용하면 위에 노치 부분 밑에부터 화면이 출력된다.
Styled Components 사용가능 하지만 Emotion/native 을 설치하고 사용하는 것이 더 좋다. (자동완성 기능 때문에)
Button title 속성이 무조건 있어야 하고 title 속성은 버튼의 내용을 화면에 보여준다.
onClick 속성 대신 onPress 를 사용한다.