๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
49
์นด์นด์คํก ํด๋ก ์ฝ๋ฉ ์น๊ตฌ๋ฆฌ์คํธ ๋ง๋ค๊ธฐ
์น๊ตฌ ๋ฆฌ์คํธ ๋ง๋ค ๋๋ ๋ด ํ๋กํ๊ณผ ๊ตฌ๋ถ๋๋ division ์ ์ ๋๊ณ , ๊ทธ ๋ฐ์๋ ์น๊ตฌ์ ์น๊ตฌ ๋ช
์ ๋ํ๋ด๋ ๊ตฌ๊ฐ์ด ํ์ํ๋ค. (FriendSection) ๊ทธ๋ฆฌ๊ณ ์น๊ตฌ ๋ฆฌ์คํธ๋ฅผ ํ ๊ธ ํ ์ ์๋ ํ์ดํ๊ฐ ํ์ํ๋ค. ์น๊ตฌ ๋ฆฌ์คํธ๋ data.js์ ์ ์ฅ๋ ์์ ๋ฐ์ดํฐ๋ค์ ๊ฐ์ ธ์ ์ฌ์ฉํ๋ค. (FriendList) ์์ ๋ฐ์ดํฐ๋ค์ ๊ฐ์ฒด๊ฐ ๋ฐฐ์ด๋ก ์ ๋ ฌ๋์ด ์๋ค. 1. ์ฝ๋ ๋ฆฌ๋ทฐ (1) App.js ์์ ๋ชจ๋ ๊ฐ์ ๊ด๊ณ ํ ๋ฒ์ ๋ณด๊ธฐ //onPressArrow ๋ก์ง์ ์์ง ์ ์งฐ๊ณ , ํด๋ฆญ์ ๋ก๊ทธ์ ๋จ๋ ๊ฒ๋ง ๋ง๋ค์๋ค. const onPressArrow = () => { console.log("clicked arrow") } ์น๊ตฌ ๋ฆฌ์คํธ ๋ฐฐ์ด์ ๊ธธ์ด๋ ์น๊ตฌ๋ฆฌ์คํธ๋ฅผ ์ ์ฅํด๋์ ๋ฐฐ์ด friendsProfile.len..
2023.03.27
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
์นด์นด์คํก ํด๋ก ์ฝ๋ฉ My Profile ๋ง๋ค๊ธฐ
Myprofile ์ฉ ๋ชจ๋์ ์๋ก ๋ง๋ค์ด์ ๋ด์ฉ์ ์ ์ ๋ค import ๊ทธ๋ฆผ๊ณผ ๊ธ๋ค ์ฌ์ด์๋ flex-direction row๋ฅผ ํก์ผ๋ก ๊ฐ๋๋ก ๊ธ ๋ผ๋ฆฌ๋ ์ด๋ก ๊ฐ๋๋ก ์ค์ , Margin์ ์ฃผ๋ ๋ชจ๋์ ๋ง๋ค์ด์ ์ํ๋ฐ, ํ๋กํ, ๋ ํ๋กํ ๋ด์ฉ๋ค ์ฌ์ด์ margin ์ฃผ๊ธฐ Margin Module์ ์ฐ๋ ์ด์ ๋ ํด๋น Margin์ ์ค์ผํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ๊ฒ ์ด๊ธฐ ๋๋ฌธ์ ๊ณ์ ๋ก ์ฃผ๋ ๊ฒ๋ณด๋ค ์ด๋ฅผ ์ํ ์ปดํฌ๋ํธ๋ฅผ ํ๋ ๋ง๋๋ ๊ฒ ๋ซ๋ค. 0. iphone-x-helper๋ ์ด์ ์๋น์ค๋ฅผ ์ข
๋ฃํจ. ์ด๊ฒ์ ๋์ฒดํ๋ git-hub ๋ด์ฉ GitHub - th3rdwave/react-native-safe-area-context: A flexible way to handle safe area insets in JS. Als..
2023.03.26
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
React-Native ์๋จ Bar ๋ง๋ค๊ธฐ
1. ๊ณ ๋ คํด์ค์ผ ํ ๋ถ๋ถ ์ฐ์ ํด๋ํฐ ํ๋ฉด์ ๋ณด๋ฉด ๋งจ ์๋จ์๋ ๋ฒ ํฐ๋ฆฌ ์๋ ๋ฐ ์๋ฆผ๋ค์ด ๋์ด ๋๊ณ ์๊ณ , ํ๋จ bar์๋ ํ์ผ๋ก, ๋๊ฐ๊ธฐ ๋ฒํผ ๋ฑ์ด ์๋ค. ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ๋ค์ ์์ญ์ ๊ณ ๋ คํ์ง ์๊ณ ์ฑ์ ๋ง๋ ๋ค๋ฉด, ๋ด๊ฐ ๋ง๋ ์ฑ์ ์๋จ ๋ฐ๊ฐ ํธ๋ํฐ์ ๋ฒ ํฐ๋ฆฌ ์๋์ด๋ ์๋ฆผ ๋ถ๋ถ๊ณผ ๊ฒน์น ์ ์๋ค! 2. ํธ๋ํฐ์ ๊ณ ์ ์๋จ, ํ๋จ ์์ญ์ ์นจ๋ฒํ์ง ์๋ ์ฑ์ ๋ง๋๋ ์กฐ์น 2๊ฐ์ง (1) SafeAreaView ์ฌ์ฉ // ์ฅ์ฐฉ import { SafeAreaView } from 'react-native'; // SafeViewArea ์ด์ฉ ํด๋น ์ปดํฌ๋ํธ ์ด์ฉ ์, ์๋์ผ๋ก ํธ๋ํฐ ์์ฒด ์๋จ ํ๋จ ๋ฐ๋ฅผ ์นจ๋ฒํ์ง ์๊ณ ๊ทธ ์์ชฝ์์ ์์
์ ํ ์ ์๊ฒ ํด์ค๋ค. ํด๋น ๋ ์๋์ผ๋ก ์์ชฝ ์์ญ์์ ์์
์ด ์ด๋ฃจ์ด์ง๋ค. ํ์ง๋ง ํด๋น ..
2023.03.26
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
์ฌ ์ฌ์ฉ์ ํตํ SourceCode ๊ฐ๊ฒฐํ(props, CustomHook ์ด์ฉ)
ํ์๊ฐ์
ํ๋ฉด์ ๊ตฌ์ฑํ๋ ์ปดํฌ๋ํธ๋ค ๊ฐ์ ๋ก์ง์ ๊ฐ๋ค. ๋ชจ๋ ๊ฐ์ ๋ฐ์์ ๋ฐฑ์๋๋ก ๋ณด๋ด์ค๋ค. ๋ง์ฝ ์ฌ๋ฐ๋ฅด๊ฒ ์
๋ ฅ ์ ํ์ ๊ฒฝ์ฐ์๋ ์ค๋ฅ ๋ฉ์ธ์ง ๋์ด๋ค. ์ด๊ธฐํ ๋ฒํผ์ด ์๋ค. ๋ง์ฝ ์ด ๊ฐ์ ๋ก์ง์ ์ปดํฌ๋ํธ๋ฅผ ์ฌ๋ฌ ๊ฐ ์์ฑํ๋ค๋ฉด, ์ค๋ณต์ฝ๋๋ ๋ง๊ณ , ์ฝ๋๋์ด ๊ธธ์ด์ ธ ๊ฐ๋
์ฑ์ด ๋จ์ด์ง ๊ฒ์ด๋ค. ์ด๋ฅผ ๋ง๊ธฐ ์ํด ํต์ผ๋ ํ๋์ ๋ก์ง์ ๋ง๋ค๊ณ , ํด๋น ๋ก์ง์ ํธ์ถํ ๋, ์ฐ๋ ์ธ์ ๊ฐ์ ๋ฌ๋ฆฌํจ์ผ๋ก์จ, ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ์ ๋์ธ๋ค. ๋ํ Custom Hook์ด๋ผ๋ ์ปค์คํฐ๋ง์ด์งํ ํ
์ ๋ง๋ค์ด, ๊ฐ์ ๋ก์ง์ useState๋ฅผ ํ๋๋ก ํต์ผํ๊ณ , ์ฌ๊ธฐ ๋ฃ๋ ์ธ์๋ค์ ๋ฌ๋ฆฌ ํจ์ผ๋ก์จ ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์๋ค. 1. ์ฝ๋ ๋ฆฌ๋ทฐ import React, { useState } from 'react'; import {Button, Tex..
2023.03.25
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
์ปดํฌ๋ํธ์ ์๋ช
์ฃผ๊ธฐ์ useEffect
1. ํด๋์ค ์ปดํฌ๋ํธ์ ์๋ช
์ฃผ๊ธฐ ํด๋์ค ์ปดํฌ๋ํธ๋ ์๋ช
์ฃผ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ํด๋์ค ์ปดํฌ๋ํธ๊ฐ ์์ํ ๋ ์์ฑ์๊ฐ ์์ฑ๋๊ณ , render() ํจ์๋ ์ปดํฌ๋ํธ๊ฐ ๋์๊ฐ ๋ ์์ฑ์ด ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ปดํฌ๋ํธ๊ฐ ์ฒ์ ์์ํ ๋, Spring ์ ์ฒ๋ฆฌ๊ธฐ ์ฒ๋ผ componentDidMount๊ฐ ์์๋๋ค. componentDidUpdate๋ ์ปดํฌ๋ํธ๊ฐ run ๋๋ ๋์ค์, ์
๋ฐ์ดํธ(์ฌ์ฉ์์ ์์ง์, ๊ทธ์ ๋ฐ๋ฅธ ํผ๋๋ฐฑ)๊ฐ ์์ ๋๋ง๋ค ํธ์ถ ๋๋ค. ๋ง์ง๋ง์ผ๋ก ์ปดํฌ๋ํธ๊ฐ ์ข
๋ฃ๋ ๋ componentWillUnmount๊ฐ ํธ์ถ๋๋ค. ํด๋์ค ์ปดํฌ๋ํธ ๋ด๋ถ์๋ componentDidMount, componentDidUpdate, componentWillUnmount๋ผ๋ ํจ์๊ฐ ๋ฐ๋ก ์กด์ฌํ๊ณ , ์ด๋ค์ด ์์ ์ด ํธ์ถ๋์ด์ผ ํ๋ ํ์ด๋ฐ..
2023.03.25
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
Hooks - useState ์ด์ฉ
1. ๊ฐ๋
์ ๋ฆฌ (1)Hooks๋? ๋ณธ๋ ํจ์ํ ์ปดํฌ๋ํธ์์๋ ๋ถ๊ฐ๋ฅ ํ๋, ์ํ๊ด๋ฆฌ๋ ์ฃผ๊ธฐ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ฒ (2)useState๋? Hooks์ ํ ์ข
๋ฅ๋ก์ ํจ์ํ ์ปดํฌ๋ํธ์ ์ํ๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋๋ก ํด์ค๋ค. a. ํํ // import๋ก ์ฅ์ฐฉ ํ์ import {useState} from "react"; // ์ฌ์ฉ const [value,setValue] = useState(์ด๊ธฐ๊ฐ) b. ํน์ง -useState()๋ ๋ฐฐ์ด๋ก์ ์ฒซ ๋ฒ์งธ ์์์๋ value๋ฅผ ๋ ๋ฒ์งธ ์์์๋ value๋ฅผ ๋ฐ๊ฟ ์ ์๋ ํจ์ setValue๊ฐ ๋ค์ด์๋ค. -useState()๋ Boolean, String, number ํ ๋ณ์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. - View ์์์ setValue ์ฌ์ฉ๋ฒ์ ๋ค์..
2023.03.24
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
Props ๊ฐ์ฒด ์ธ์ ์ด์ฉํ์ฌ ์นดํก ํ๋กํ, ์น๊ตฌ๋ชฉ๋ก ๋ง๋ค๊ธฐ
props๋ ์์ ์ปดํฌ๋ํธ์์ ๋ฐ์ ์์ฑ๊ฐ๋ค์ ํ์ ์ปดํฌ๋ํธ์ ์ ๋ฌํด์ฃผ๋ ๊ฐ์ฒด์ด๋ค. ์์ ์ปดํฌ๋ํธ์์ ๋ฐ์ ์์ฑ ๊ฐ๋ค์ props์ ๋ฉค๋ฒ๋ก ๋ค์ด๊ฐ๋ค. ์นดํก ํ๋กํ์ ๋ด ํ๋กํ์ด๋ , ์น๊ตฌ๋ค ํ๋กํ์ด๋ ๋ก์ง์ด ๊ฐ๋ค. ๋ฐ๋ผ์ ์นดํก ํ๋กํ ํ๋ํ๋ ํ์ ์ปดํฌ๋ํธ๋ก ๋ง๋ค์ด ๋ฒ๋ฆฌ๋ฉด, ์ค๋ณต์ฝ๋๊ฐ ๋ง์์ ธ์ ๊ฐ๋
์ฑ์ด ๋จ์ด์ง๋ค. ์ด๋ฅผ ์ํด ํ๋กํ ๋ก์ง์ ํ๋๋ง ๋ง๋ค๊ณ , ๊ฐ ํ๋กํ๋ง๋ค ๋ค๋ฅธ ์ธ์ ๊ฐ๋ค์ props๋ก ๋๊ฒจ ๋ฐ์ ๋ง๋๋ ๊ฒ์ด ํจ์ฌ ํจ์จ์ ์ด๋ค. ์ฌ๊ธฐ์ ํด๋ณผ ๊ฒ์ ํ๋์ ํ๋กํ ๋ก์ง์ ๋ง๋ค๊ณ , ํ๋กํ ๋ณ๋ก ๋ค๋ฅธ ๊ฐ๋ค์ props๋ก ๋ฐ์์ ๊ตฌํํ ๊ฒ์ด๋ค. ํ์ ์ปดํฌ๋ํธ๋ฅผ ์ ์ธํ ๋ถ๋ถ๊ณผ ํธ์ถํ ๋ถ๋ถ์ด ๋ฐ๋ก ๋๋๋ ๊ฑธ ๋ณผ ์ ์๋ค. ํธ์ถํ ๋ถ๋ถ์์ ๋ฐ์ ์์ฑ ๊ฐ๋ค์ props๊ฐ ๋ฉค๋ฒ๋ก ๋ฐ์์ ์ ์ธ ๋ถ๋ถ์ ์ ๋ฌํด์ค๋ค. 1..
2023.03.24
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
Core Component ํต์ฌ ๊ตฌ์ฑ ์์ ๋ฏ์ด๋ณด๊ธฐ
1. ๊ตฌ์กฐ ๋ฏ์ด ๋ณด๊ธฐ ์ผ๋จ ์ฒ์ ๋ค์ด๋ด์ ์ ํํ๊ฒ๋ ๋ชจ๋ฅด๊ฒ ๊ณ ํฐ ๊ตฌ์กฐ๊ฐ ๋ฌด์์ ์๋ฏธํ๋์ง ๋ฏ์ด ๋ณด๊ฒ ๋ค. // import์นธ // import ํ์ํ ๊ตฌ๋ฌธ ๋์ค๋ฉด react๊ฐ ์๋์ผ๋ก import ํด์ค. // ๊ทผ๋ฐ ๋ด๊ฐ ์๋ชป ์จ์ ์ฝ๊ฐ ์ง์ ๋ค๊ฐ ๋ค์ ํ๋ฉด, ์๋ import ์ ํด์ค. ์ด๊ฑฐ ์กฐ์ฌํ์ 1์๊ฐ ํด๋งธ๋ค. import { StatusBar } from 'expo-status-bar'; import { Button, Switch } from 'react-native'; import { Image, ScrollView, StyleSheet, Text, TextInput, View } from 'react-native'; // ๋ณธ๋ฌธ - app์ ๋ด์ฉ export default function App()..
2023.03.23
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
React Native๋ก App ๋ง๋ค์ด์ Phone์์ ์คํ
1. ์ฌ์ ์ ์ค์นํด์ผ ํ ๊ฒ๋ค (1) Node.js - React๋ ์ ๋ถ JS๋ก ์ด๋ฃจ์ด์ง. (2) Git - ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ํด 2. ๋ด๊ฐ React ์ค์นํ App ๋ง๋ค๊ธฐ ์ผ๋จ React-Native ์์
ํ ํด๋ ๋ง๋ค๊ธฐ cd๋ก ํด๋น ํด๋๋ก ์ฎ๊ฒจ๊ฐ๊ณ ์ด ๋ช
๋ น์ด ์น๋ฉด first-my-app์ด๋ ํจํค์ง ๋ง๋ค์ด์ง. ์ฐ๋ฆฌ๊ฐ expo cil ์ ์จ์ ์ด๋ ๊ฒ ํ
ํ๋ฆฟ ๋ค ๋ง๋ค์ด์ ธ์ ๋์ค๋ ๊ฒ์ ๊ทธ ํ์ ์ด๋ ๊ฒ ๋จ๋๋ฐ, ์ฌ๊ธฐ๋ก ๋ค์ด๊ฐ๋ฉด ์ผ์ข
์ hello-world์ฒ๋ผ ๋์ด. **NPX๋ ๋ฌด์์ธ๊ฐ? ์๋ก์ด ๋ช
๋ น์ด๋ก NPX๊ฐ ๋์๋๋ฐ ์ด๋ ๋ฌด์์ ๋ปํ ๊น? ์ด๊ฑด ์๋ก์ด ํจํค์ง ๊ด๋ฆฌ ๋ชจ๋์ด ์๋๋ผ NPM (์ฐ๋ฆฌ๊ฐ ์ฐ๋ ํจํค์ง ๊ด๋ฆฌ ๋ชจ๋)์ ๋ ํธํ๊ฒ ์ธ ์ ์๊ฒ ํด์ฃผ๋ NPM ์ด ์ ๊ณตํ๋ ํ๋์ ๋๊ตฌ์ ๋ถ๊ฐํ๋ค.
2023.03.22
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก