
โ Blur View
https://docs.expo.dev/versions/latest/sdk/blur-view/
BlurView
A React component that blurs everything underneath the view.
docs.expo.dev
โ ScrollView
refreshControl
https://reactnative.dev/docs/scrollview#refreshcontrol
ScrollView · React Native
Component that wraps platform ScrollView while providing integration with touch locking "responder" system.
reactnative.dev
ScrollView ๋จ์
๋ชจ๋ ์์ ์ปดํฌ๋ํธ๋ค์ ํ ๋ฒ์ renderํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ ํผํฌ๋จผ์ค์ ์ข์ง ์์ ์ํฅ์ ๋ผ์น๋ค.
์ด ๋จ์ ์ ๋ํ ๋ฐฉ์์ด FlatList
โ FlatList
https://reactnative.dev/docs/flatlist
FlatList · React Native
A performant interface for rendering basic, flat lists, supporting the most handy features:
reactnative.dev
์ปดํฌ๋ํธ๊ฐ ์ค์ ๋ก ๋ณด์ด๊ธฐ ์ง์ ์ render ํ๋ค. (๋ฏธ๋ฆฌ ์ ๋ถ render ์ ํจ) (Lazy Render)
๋ํ map()๋ ํ์์๊ณ key prop๋ ํ์์๋ค.
๋ฌดํ ์คํฌ๋กค์ ์ฝ๊ฒ ๊ตฌํํ๊ธฐ ์ํ prop๋ ๊ฐ์ง๊ณ ์๋ค.
<FlatList
horizontal
data={trending}
keyExtractor={(item) => item.id.toString()}
contentContainerStyle={{ paddingHorizontal: 20 }}
showsHorizontalScrollIndicator={true}
renderItem={({ item }) => <VMedia posterPath={item.poster_path} />}
ItemSeparatorComponent={() => <View style={{ width: 20 }} />}
/>
key๊ฐ์ string์ด ๊ด๋ก
vertical ScrollView ์์ vertical FlatList๊ฐ ์์ผ๋ฉด ์ ๋๋ค.
onEndReached
๋ฌดํ ์คํฌ๋กค ๊ตฌํ ๊ฐ๋ฅํ prop
onEndReachedThreshold prop์ผ๋ก ๋์ ๋๋ฌํ๋ ๋ฒ์ ์ง์ ๊ฐ๋ฅ
Tanstack Query์ useInfiniteQuery์ ์กฐํฉํ๋ฉด ์ข๋ค.
โ SectionList
Section์ ๋ฐ๋ฅธ list๋ค์ ๊ฐ์ง๊ณ ์์ ๋ ๊ฐ section์ ๋จธ๋ฌด๋ฅด๋ ๋์ ํด๋น section์ header๋ฅผ ์คํฌ๋กค ํ๋ ๋์ ์๋จ์ ์ ์ง์์ผ์ค๋ค.
https://reactnative.dev/docs/sectionlist
SectionList · React Native
A performant interface for rendering sectioned lists, supporting the most handy features:
reactnative.dev
โ Expo LinearGradient
https://docs.expo.dev/versions/latest/sdk/linear-gradient/
LinearGradient
A universal React component that renders a gradient view.
docs.expo.dev
npx expo install expo-linear-gradient
macOS์์ iOS๋ฅผ ๋น๋ ์ค์ด๋ฉด ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํด์ค์ผ ํจ
npx pod-install ios
์ค์น ์๋ฃ ํ ๋ค์ ๋น๋ํด์ค์ผ expo linear gradient๊ฐ ์ ์ ์๋ํ๋ค.
Usage
<Header>
<Background
style={StyleSheet.absoluteFill}
source={{ uri: makeImgPath(params.backdrop_path || "") }}
/>
<LinearGradient
// Background Linear Gradient
colors={["transparent", BLACK_COLOR]}
style={StyleSheet.absoluteFill}
/>
<Column>
<Poster path={params.poster_path || ""} />
<Title>{"title" in params ? params.title : params.name}</Title>
</Column>
</Header>
โ Linking
https://reactnative.dev/docs/linking
Linking · React Native
Linking gives you a general interface to interact with both incoming and outgoing app links.
reactnative.dev
Usage
const openYTLink = async (videoId: string) => {
const baseUrl = `https://m.youtube.com/watch?v=${videoId}`;
await Linking.openURL(baseUrl);
};
<VideoBtn key={video.key} onPress={() => openYTLink(video.key)}>
<Ionicons name="logo-youtube" color="#FF0034" size={24} />
<BtnText>{video.name}</BtnText>
</VideoBtn>
๋จ์ : ์ฑ ๋ฐ์ผ๋ก ๋๊ฐ์ง๋ค.(ํด๋น ์ฑ์ด ์์ผ๋ฉด ํด๋น ์ฑ์ ์ด๊ณ ์์ผ๋ฉด ๋ธ๋ผ์ฐ์ ๋ก ์ฐ๋ค.)
โ Expo WebBrowser
https://docs.expo.dev/versions/latest/sdk/webbrowser/
WebBrowser
A library that provides access to the system's web browser and supports handling redirects.
docs.expo.dev
์ฑ ๋ด์์ ๋งํฌ๋ฅผ ์ด ์ ์์
โ Share
https://reactnative.dev/docs/share
Share · React Native
Example
reactnative.dev
Usage
import { Dimensions, Platform, Share, StyleSheet } from "react-native";
const shareMedia = async () => {
const isAndroid = Platform.OS === "android";
const homepage = isMovie
? `https://www.imdb.com/title/${data.imdb_id}`
: data.hompage;
if (isAndroid) {
await Share.share({
message: homepage,
title: isMovie ? params.title : params.name,
});
} else {
await Share.share({
url: homepage,
message: params.overview,
});
}
};'๐ธ React Native' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| React Native - Animation (0) | 2026.02.11 |
|---|---|
| React Native - react native web swiper (0) | 2026.01.27 |
| React Native - Dark Mode (0) | 2026.01.26 |
| React Native - npx expo prebuild, ๊ธฐ๊ธฐ ๋ฌด์ ์ฐ๊ฒฐ ๋ชจ๋ํฐ๋ง (0) | 2026.01.21 |
| React Native - React Navigation (0) | 2026.01.21 |