[일지 내용]
리액트 네이티브 앱을 만들기 위해 알아야 하는 최소한의 리액트 개념 4가지
컴포넌트(Component): 정해진 엘리먼트들(요소)을 사용하여 만든 화면의 일부분
상태(State,useState): 컴포넌트에서 데이터를 유지하고 관리하기 위한 유일한 방법
== 그냥 사용할 데이터
속성(Props): 상위 컴포넌트에서 하위 컴포넌트로 데이터를 전달하는 방식
== 그냥 데이터 전달
useEffect: 화면에 컴포넌트가 그려지면 처음 실행해야 하는 함수들을 모아두는 곳
컴포넌트는 즉, 화면의 모든 부분이다.
그리고 컴포넌트란 App.js의 큰 App 함수처럼, 코드 전체를 감싸고 있는 함수를 뜻하기도 한다.
버튼 하나가 컴포넌트가 될 수 있고, 버튼을 모아둔 영역이 컴포넌트가 될 수 있다.
리액트에서 상태( state )는 리액트 라이브러리에서 제공해주는 useState 로 생성하고
setState 함수로 정/변경 할 수 있다. (UI = component(state))
속성엔 어렵지 않은 규칙이 숨어 있다.
useEffect(()=>{ ...화면이 그려진 다음 가장 먼저 실행되야 할 코드 작성 공간 },[])
보통 useEffect는 데이터를 준비할 때 사용한다.
데이터를 준비한다는 것은,
데이터를 서버로부터 혹은 어디선가로부터 받은 후 상태(state)에 반영한다는 것을 뜻한다.
주로 예를 들어 아래 순서로 이루어진다.
expo install expo-status-bar //import import { StatusBar } from 'expo-status-bar'; //사용 <StatusBar style="black" /> //style 이 light 일 때와, black 일 때가 다르다. // 배경색이 검은색일 경우 위와 같이 스타일을 설정하면 상태 바가 같은 블랙이므로 보이지 않는다.
상태 바는 컴포넌트마다 다르게 적용할 수도 있고, 앱 전체에 공통적으로 적용할 수 있다.
React-navigation 라이브러리 또한 Expo에서 지원하고 있는 도구로써
Expo와 함께 사용하기 좋다.
//네비게이션 설치 코드 //yarn yarn add @react-navigation/native //네비게이션 추가 설치코드 expo install react-native-gesture-handler react-native-reanimated react-native-screens react-native-safe-area-context @react-navigation/native
컴포넌트를 페이지화 시키는 스택 네비게이션은 다음과 같다.
페이지처럼 만든 컴포넌트를, 정말 페이지처럼 사용할 수 있게끔 페이지로 컴포넌트를 감싸 페이지로 만들어준다.
만든 여러 페이지들을 책갈피 기능을 하는 스택 네비게이터에 모조리 등록시켜서,
언제든지 페이지 이동이 가능하게끔 해준다.
페이지는 Stack.Screen 이라 부르며
책갈피는 Stack.Navigator 라 부른다.
//스택 네비게이터 설치 코드
yarn add @react-navigation/stack
1. 사용 준비
import React from 'react'; //설치한 스택 네비게이션 라이브러리를 가져온다 import { createStackNavigator } from '@react-navigation/stack'; //페이지로 만든 컴포넌트들을 불러온다 import DetailPage from '../pages/DetailPage'; import MainPage from '../pages/MainPage'; //스택 네비게이션 라이브러리가 제공해주는 여러 기능이 담겨있는 객체를 사용한다 //그래서 이렇게 항상 상단에 선언하고 시작하는게 규칙 const Stack = createStackNavigator();
2. 기본 틀
//리액트의 모든 파일은 컴포넌트라 생각하고 //페이지 기능을 해주는 모든 기능이 담겨 있는 컴포넌트를 만든다 생각하자 const StackNavigator = () =>{ return ( /// 페이지 기능이 들어갈 곳 ) } export default StackNavigator; '''
3. 스크린 옵션
//컴포넌트들을 페이지처럼 여기게끔 해주는 기능을 하는 네비게이터 태그를 선언한다. //위에서 선언한 const Stack = createStackNavigator(); Stack 변수에 들어있는 태그를 꺼내 사용한다. //Stack.Navigator 태그 내부엔 페이지(화면)를 스타일링 할 수 있는 다양한 옵션들이 담겨 있다. <Stack.Navigator screenOptions={{ headerStyle: { backgroundColor: "black", borderBottomColor: "black", shadowColor: "black", height:100 }, headerTintColor: "#FFFFFF", headerBackTitleVisible: false }} {/* 컴포넌트를 페이지로 만들어주는 엘리먼트에 끼워 넣는다. 이 자체로 이제 페이지 기능을 한다*/} <Stack.Screen name="MainPage" component={MainPage}/> <Stack.Screen name="DetailPage" component={DetailPage}/> </Stack.Navigator>
4. 페이지 연결
{/* 컴포넌트를 페이지로 만들어주는 엘리먼트에 끼워 넣는다. 이 자체로 이제 페이지 기능을 한다*/} <Stack.Screen name="MainPage" component={MainPage}/> <Stack.Screen name="DetailPage" component={DetailPage}/>
감사합니다 😊