본문 바로가기

개발 일지/React

React Native

React Native

리액트로 모바일앱을 만들 수 있는 프레임 워크

리액트로 android, ios 네이티브앱을 동시에 만들 수 있는 크로스플랫폼

 

React Native 장점

1.하나만 만들면 되니깐 개발 비용이 절감된다.

2.리액트 알고있으면 배우기 쉽다. 

 

React Native 세팅하려면

1.Expo Go

  • 쉬운 셋업 및 빠른 초기개발
  • Native 코드 수정은 불가능

2.React Native CLI

  • 모든 React Native 를 위한 인프라를 직접 설치
  • Native 코드 직접 수정 가능

3.CRNA

  • CRA 에서 영감을 받고 만든 React Native Boiler Plate로 Expo SDK와 Cli의 특징을 모두 가지고 있음
  • Android Studio 또는 Xcode 설치 필요

4.ignite

  • CRNA + MobX 등 각종 라이브러리들도 샘플 코드들이 들어 있음.
  • React Native로 복잡한 앱을 만들어야 할 때 초기 셋업 후 간단한 수정작업으로 앱 완성 가능. 숙련자에게 오히려 추천

 

React Native 주요 UI 컴포넌트

const App()=>{
<>
<View></View>  {/* => <div> 랑 비슷한 역할 */}
<Text></Text>  {/* => <p> 랑 비슷한 역할 */}
<Image></Image> {/* => <image> 랑 비슷한 역할 */} 
<ScrollView></ScrollView> {/* => 스크롤 가능한 범위 지정 */} 
<TextInput></TextInput>  {/* => <imput> 랑 비슷한 역할 */} 


<TouchableOpacity></TouchableOpacity> 
{/* => <button> 이랑 비슷한 역할 // <Button>태그가 따로 있긴한데 사용하기 구데기 같아서 안씀 
<TouchableOpacity>쓰면됨 */} 

<SafeAreaView></SafeAreaView>
{/* => 스마트폰 상단의 노치나 카메라 등에 해당하는 높이까지를 제외하고 Area를 잡는다 */} 

<StatusBar></StatusBar> {/* => 스마트폰 최상단  상태창 부분 */} 
</>
}

주의사항

  • 웹: <div>텍스트</div> (Ok)
  • 앱: <View>텍스트</View> (Not Ok) >> <View><Text>텍스트</Text></View> (Ok)
  • View 는 기본적으로 flexBox 이며 default flex-direction은 column

 

React Native 스타일링 방법

1.inline styling

import React from "react";
import { Text, View } from "react-native";

const App = () => (
  <View style={{ marginTop: 10, flex: 1 }}>
    <Text>React Native</Text>
  </View>
);

2.StyleSheet

https://reactnative.dev/docs/stylesheet

 

StyleSheet · React Native

A StyleSheet is an abstraction similar to CSS StyleSheets

reactnative.dev

import React from "react";
import { StyleSheet, Text, View } from "react-native";

const App = () => (
  <View style={styles.container}>
    <Text>React Native</Text>
  </View>
);

const styles = StyleSheet.create({
  container: {
    marginTop: 10,
		flex: 1
  }
)

3.Styled Component

VS CODE Extension 중: vscode-styled-components 설치 필요 (자동완성 목적)

https://emotion.sh/docs/@emotion/native

 

Emotion – @emotion/native

Style and render React Native components using emotion This package also depends on react, react-native and prop-types so make sure you've them installed. Use @emotion/react for theming support.

emotion.sh

import { Text } from "react-native";
import styled from '@emotion/native'

// VS CODE Extension 중 vscode-styled-components 를 설치해야 css styling 자동완성 기능 이용 가능
const StyledView = styled.View`
  flex: 1;
	margin-top: 10px
`
const App = () => (
  <StyledView>
    <Text>React Native</Text>
  </View>
);

// 다크 모드 적용
import { useColorScheme } from "react-native"; // 현재 디바이스가 light mode 인지 dark mode 인지

4.Tailwind

https://www.nativewind.dev/quick-starts/expo

 

Expo | NativeWind

A example of an Expo project can be found on Github

www.nativewind.dev

import React from "react";
import { Text, View } from "react-native";

const App = () => (
  <View className="mt-10 flex-1">
    <Text>React Native</Text>
  </View>
);

 

 

 

React Native 의 태그 속성

<TouchableOpacity onPress={내용}></TouchableOpacity>
{/* onPress: onClick 과 비슷한 역할 */}

<TextInput onChangeText={내용} onSubmitEditing={내용}></TextInput>
{/* onChangeText: onChange 와 비슷한 역할
onSubmitEditing: 앱에선 <form action="submit">태그 안씀 대신 onSubmitEditing 씀 */}

 

React Native 유용한 기능

삭제 처리 전에 Alert API를 이용해서 “정말로 삭제하시겠습니까?” 얼럿 띄운 후 확인 시 삭제 처리

Alert API 사용

https://reactnative.dev/docs/alert

 

Alert · React Native

Launches an alert dialog with the specified title and message.

reactnative.dev

const deleteTodo = (id) => {
    Alert.alert("Todo삭제", "삭제하시겠습니까?", [
      {
        text: "취소",
        style: "cancel",
        onPress: () => console.log("취소"),
      },
      {
        text: "삭제",
        style: "destructive",
        onPress: async () => {
          await deleteDoc(doc(db, "todos", id));
        },
      },
    ]);
  };

 

 

가장 중요한건 

공식문서 탐색 

https://reactnative.dev/docs/components-and-apis

 

Core Components and APIs · React Native

React Native provides a number of built-in Core Components ready for you to use in your app. You can find them all in the left sidebar (or menu above, if you are on a narrow screen). If you're not sure where to get started, take a look at the following cat

reactnative.dev

 

'개발 일지 > React' 카테고리의 다른 글

OPEN API 써보기  (0) 2023.01.05
Redux Tool Kit 사용법  (0) 2023.01.04
Redux Tool Kit 초기 세팅  (0) 2023.01.03
React useEffect  (0) 2022.12.22
React CRA  (0) 2022.12.19