๋ด์ผ๋ฐฐ์์บ ํ 4๊ธฐ ์คํ๋ฅดํ์ฝ๋ฉ React B๋ฐ
๐ ์ค๋์ ๊ณต๋ถ
1. React native ๊ธฐ์ด ์ค๊ฐ_2
- StatusBar ์ปดํฌ๋ํธ๊ฐ ์์ผ๋ฉด ios ๋ ์์ ์๊ฐ ๋ฑ์ด ์ ๋์ด
- SafeAreaView style={{ flex: 1 }}
- flex:1 ์ ์ ์ฐ๋ฉด ๋ด์ฉ์ด ์๋๋ก stretch ๋์ง ์์ ์๋จ์ ์์ถ๋ ๊ฒ์ฒ๋ผ ๋ณด์
โญ ์ฝ๋ฉ์ ํ๊ธฐ ์ ์ ํด์ผ ํ ๊ฒ๋ค์ ์ฃผ์์ ์ ๋ฆฌํ๊ธฐ
- ์๋ฒ ์๋ก๊ณ ์นจ
- ํฐ๋ฏธ๋์ ์ปค์๊ฐ ์๋ ์ํ์์ R ๋๋ฅด๊ธฐ
- mutable, immutable
- filter๋ immutable์ด๋ผ todos๋ฅผ ์์ ๋ณต์ฌํ์ง ์๊ณ ๋ฐ๋ก ์จ๋ ๋๋ค.
- findIndex์ ๊ฒฝ์ฐ mutable์ด๋ผ ์์ ๋ณต์ฌ ํ์
ํ์์ดํ
Add Task
- onSubmitEditing
- ์ํฐ ๋ฒํผ ๋๋ฅด๋ฉด ํจ์๊ฐ ์คํ
- 10๋ถ, ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ง๊ณ todo ์ถ๊ฐํ๊ธฐ
- ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ง๋ ๋ถ๋ถ์ ๋ํด ๊ฐ์ด ์ ์กํ
- ์ถ๊ฐํ๋ ๋ถ๋ถ๋ง ์๋
-> input์ onSubmitEditing์ addTodo ํจ์๋ฅผ ๋ฃ๊ณ ํด๋ดค๋๋ฐ ์ ์ ๋จ..
๋ฌธ์ ๋ฐ ํด๊ฒฐ
- ํํฐ๋ ์ฝ๋ ๋ฐ๋ผํ๋๋ฐ map๋ถ๋ถ์์ ์ค๋ฅ
todos.map
is notan object
const [todos, setTodos] = useState([]);
useState๋ฅผ ์ด๋ ๊ฒ []
๋ฐฐ์ด๋ก ๋ง๋ค์ง ์์์ ์๊ธด ์ค๋ฅ
๋ฌธ์ ๋ฐ ์๋
- ์ค๋ฅ๋ ์ ๋๋๋ฐ ์
๋ ฅํ ๊ฐ์ด ํ๋ฉด์ ๋ณด์ด์ง ์๋๋ค.
- log๋ฅผ ์ฐ์ผ๋ฉด ๋ด๊ฐ ์
๋ ฅํ ๊ฐ์ด ๋ฐฐ์ด๋ก ์ ๋ค์ด๊ฐ ์๋๋ฐ ํ๋ฉด์ ๋จ์ง ์๋๋ค.
- ScrollView ๋ด๋ถ๋ฅผ ํํฐ๋ ์ฝ๋๋ก ๋ณต๋ถํด ์ค๊ณ import ๋ค ํ๋ ๋ฌ๋ค.. ์ ๋ง ์คํ์ผ ๋๋ฌธ์ธ๊ฐ?!
- ์ด ์ํ์์ ์คํ์ผ ์ปดํฌ๋ํธ ํ๋์ฉ ์ ์ฉํด๋ณด๊ธฐ
-> ์คํ์ผ ์ปดํฌ๋ํธ๋ฅผ ์ ์ฉํ๊ณ ๋๋ฉด null is not a n object(evaluating 'todos.map')
์ด๋ผ๋ ์ค๋ฅ
- ์ด ๋ถ๋ถ์ ํ์์ดํ ํ์ง ์๊ณ ํํฐ๋ ๋ผ์ด๋ธ์ฝ๋ฉ ๋ณด๋ฉด์ ์ดํด
Set Category
- useState๋ก category ์ค์
TouchableOpacity
์ style์ ์ผํญ ์ฐ์ฐ์
Set Done
- ์ฒดํฌ ์์ด์ฝ์ TouchableOpacity๋ก ๊ฐ์ธ๊ณ onPress๋ก id๊ฐ ๋๊ฒจ์ฃผ๊ธฐ
Delete Task
๋ฌธ์
- ์ญ์ Alert๋ ๋จ๋๋ฐ "์ทจ์"๊ฐ ์ ์๊ธฐ๊ณ ์ญ์ ๋๋ฌ๋ ์ญ์ ๊ฐ ์ ๋จ.
Edit Task
๋ฌธ์
- ์์ ๋ฒํผ ๋๋ฌ๋ ์ธํ์ด ์คํ ์ ๋จ
์๊ฒ ๋ ๊ฒ
- ์คํ์ผ ์ปดํฌ๋ํธ๋ฅผ ์ธ ๋ props๋ก ๋๊ฒจ์ค์ผ ํ๋ค.
- ์คํ์ผ ์ปดํฌ๋ํธ๋ก ํ๋ ๋๋ฃ๊ฐ ์๋ ค์ค.
์ฒ์๋ถํฐ ๋ค์ ๋ง๋ค๊ธฐ
์คํ์ผ ์ปดํฌ๋ํธ ์ฌ์ฉํ์ง ์๊ณ StyleSheet ์ด์ฉํด์ ์ฒ์๋ถํฐ ๋ค์ ๋ง๋ค์ด๋ณด๊ธฐ
์๊ฒ ๋ ๊ฒ
-
margin์ 2๋ฐฉํฅ์ฉ(์ํ, ์ข์ฐ) ์ฐ๋ ค๋ฉด marginVertical
, marginHorizontal
์ ์จ์ผ ํ๋ค.
-
todo๋ฅผ ์ถ๊ฐํ ๋ todo์ ํ์์ ๋ง๋ค์ด ์ค์ผ ํ๋ค. db์ ์ด๋ป๊ฒ ๋ค์ด๊ฐ์ง, id,category ๋ฑ์ key ๊ฐ์ ์ค์ ํด์ค์ผ ํ๋ค.
-
TextInput์ onChangeText={setText}
onChageText ํจ์๋ฅผ ๋ฐ๋ก ๋ง๋ค์ง ์๊ณ ๋ฐ๋ก setText๋ฅผ ๋ฃ์ด๋ ๋๋ค.
๋ฌธ์ ๋ฐ ํด๊ฒฐ
- StyleSheet ์ผ๋๋ฐ addTodo๋ง ์๊พธ ๋ง์ฝ. input์ ๊ฐ์ ์
๋ ฅํ๊ณ ์ํฐ ๋๋ฅด๋ฉด ์ค๋ฅ
undefined is not a function(near'...todos.map...')
- ์ฝ๋๋ฅผ ์์ธํ ๋ณด๋ input๊ฐ ์ด๊ธฐํ๋ฅผ ํ๋ ๊ณณ์
setText("")
๊ฐ ์๋๋ผ setTodos("")
๋ฅผ ํ๋ค.
setText("")
๋ก ์์ ํ๋ addTodo ์ ๋๋ค.
- style component ์์ด ๋ง๋๋ ์~~~์ฃผ ์ ๋๋ค..!
Maintain states on Refresh
yarn add @react-native-async-storage/async-storage
์ค์นํ๊ธฐ
- ์ ์ฅํ ์นดํ
๊ณ ๋ฆฌ๋ ๋ง๋ค๊ณ useEffect๋ก ์ ์ฅ, ๋ถ๋ฌ์ค๊ธฐ ๋ง๋ค๊ธฐ
๊ณผ์
Firebase ๋ถ์ด๊ธฐ - Refactoring for Full-Stack
๐ฉ
์๋ก์ด ํ
- ํ์ฅ!!
- ๊ธฐ๋ก, ์ ๋ฆฌ, ์ฃผ๋๋ฅผ ์ข์ํ๋ ๋ด ์ฅ์ ์ ์ด๋ ค ํ์ฅํ๊ฒ ๋ค๊ณ ํจ! ๋๋ ๋ฆฌ๋ ์ฒด์ง์ธ ๊ฒ ๊ฐ๋ค!