<FlatList
data={[
{ busNum: 146 },
{ busNum: 360 },
{ busNum: 740 },
{ busNum: 3412 },
{ busNum: 1100 },
{ busNum: 1700 },
]}
renderItem={({ item }) => <Text>{item.busNum}</Text>}
/>
<SectionList
sections={[
{
title: "๊ฐ์ ๋ฒ์ค",
data: [{ busNum: 146 }, { busNum: 360 }, { busNum: 740 }],
},
{
title: "์ง์ ๋ฒ์ค",
data: [{ busNum: 3412 }],
},
{
title: "์งํ๋ฒ์ค",
data: [{ busNum: 1100 }, { busNum: 1700 }],
},
]}
renderSectionHeader={({ section: { title } }) => <Text>{title}</Text>}
renderItem={({ item }) => <Text>{item.busNum}</Text>}
/>
const [now, setNow] = useState(dayjs());
useEffect(() => {
setInterval(() => {
const newNow = dayjs();
setNow(newNow);
}, 1000);
}, []);
๋ง๋ค์ด ์คฌ์ผ๋ฉด ์ข ๋ฃํ๋์์ ๋ ์์ด์ผ ํ๋ค.
useEffect(() => {
const interval = setInterval(() => {
const newNow = dayjs();
setNow(newNow);
}, 1000);
return () => {
clearInterval(interval);
};
}, []);
์ด๋ ๊ฒ ํด์ฃผ๋ฉด ์ปดํฌ๋ํธ๊ฐ ์ธ๋ง์ดํธ ํ๋ ์์ ์ ์๋์ผ๋ก ํด์ ๋จ
const ListHeaderComponent = () => {
return (
<SafeAreaView
style={{ backgroundColor: COLOR.GRAY_1, width: "100%", height: 200 }}
></SafeAreaView>
);
};
FlatList๋ SectionList์ ๊ฐ์ ๋ฆฌ์คํธ ์ปดํฌ๋ํธ์์ ๊ฐ ์์ดํ ์ฌ์ด์ ์์นํ ์ปดํฌ๋ํธ๋ฅผ ์ง์ ํ๋ ํ๋กํผํฐ์ ๋๋ค. ์ด๋ฅผ ํตํด ์์ดํ ๋ค ์ฌ์ด์ ๊ตฌ๋ถ์ ์ด๋ ๊ณต๊ฐ์ ์ถ๊ฐํ ์ ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ItemSeparatorComponent๋ ๋ฆฌ์คํธ ๋ด๋ถ์ ๊ฐ ์์ดํ ๋ค ์ฌ์ด์ ๋ ๋๋ง๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฆฌ์คํธ์ ๋ฐ์ดํฐ๊ฐ 10๊ฐ ์์ ๊ฒฝ์ฐ, ItemSeparatorComponent๋ฅผ ํตํด 9๊ฐ์ ๊ตฌ๋ถ์ ์ด๋ ๊ณต๊ฐ์ ์ถ๊ฐํ ์ ์๋ค.
ScrollView, FlatList, SectionList ๋ฑ์ ์คํฌ๋กค์ด ๊ฐ๋ฅํ ๊ณณ์์ ์ฌ์ฉ๊ฐ๋ฅ
const [refreshing, setRefreshing] = useState(false);
const onRefresh = () => {
setRefreshing(true);
};
useEffect(() => {
// ์ธ๋์ผ์ดํฐ๊ฐ ๋ณด์ผ๋ ๋ฐ์ดํฐ๋ฅผ refetch ํด์ค๋ค.
if (refreshing) {
setNow(dayjs());
setRefreshing(false);
}
}, [refreshing]);
refreshControl={
<RefreshControl refreshing={refreshing} onRefresh={onRefresh} />
}
refresh ๋ฅผ ํ์ ๋ api ์ธก์ data ๋ฅผ ๋ค์ refetch ํด๋ฌ๋ผ๋ผ๋ ์์ฒญ
refreshing ์ด true ์ผ ๋ ์ธ๋์ผ์ดํฐ ๊ฐ ๋ณด์ด๊ณ , ๋ฐ์ดํฐ๋ฅผ refetch ํด์ค๋ค.
data ๊ฐ refetch ๋๋ฉด setRefreshing(false)๋ก ํด์ค์ ์ธ๋์ผ์ดํฐ๊ฐ ์ฌ๋ผ์ง๋๋ก
setRefreshing(false) ๋ api refetch ๊ฐ ์๋ฃ๋๋ ์์
import { useState } from "react";
import { DARK_COLOR, LIGHT_COLOR } from "./color";
const useTheme = () => {
const [isDark, setIsDark] = useState(false);
const toggleIsDark = () => setIsDark(!isDark);
return {
NEWCOLOR: isDark ? DARK_COLOR : LIGHT_COLOR,
toggleIsDark,
};
};
export default useTheme;
<Switch value={isDark} onValueChange={toggleIsDark} />