1. Toggle๋ฒํผ ๊ตฌํ
(1) ๋ก์ง ์ค๊ณ๋
(2) ์ฝ๋๋ฆฌ๋ทฐ
TodoList ์์ฒด๋ฅผ ๋๋ฅผ ์ ์๋๋ก ํ๊ธฐ ์ํด ์ ์ฒด๋ฅผ ๊ฐ์ธ๋ RootView๋ฅผ Pressable๋ก ๋ฐ๊พธ์ด ์ฃผ์๋ค.
(3) ์ถ๊ฐ์ ์ผ๋ก ์์๋ธ ์
a. onPress ์์ฑ ๋ด๋ถ์ ํจ์๋ฅผ ์ ์ ๋ ํํ
ใฑ. ๋ง์ฝ onPress์ ์ ํ๋ ํจ์๊ฐ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ๋ก ์ ๋ฌ ์ํ๋ ๊ฒฝ์ฐ
// ์
๋ค ๊ฐ์ ๊ฐ๋ฅํจ.
onPress(ExFunc)
onPress(() => Ex.Func())
onPress(() => {return Ex.func()})
// ์ด๊ฑด ํ๋ฆฐ ๊ฒ. ์ต๋ช
ํจ์๋ก ์ ์ด์ฃผ๋ ค๋ฉด, ํจ์์ ๋งค๊ฐ๋ณ์ ๋ถ๋ถ๋ ๋ฌด์กฐ๊ฑด ์ ์ด์ค์ผ ํ๋ค.
onPress(() => Ex.Func)
ํ์ง๋ง ์ต๋ช ํจ์ ํํ ()=> {} ๋ก ์ ์ด์ฃผ๋ฉด ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง ํ ๋๋ง๋ค ์๋ก์ด ํจ์๋ฅผ ๋ง๋ค๊ธฐ์ ์ฑ๋ฅ์ด ๋จ์ด์ง ์ ์๊ณ , re-render ์ค๋ฅ๊ฐ ๋ ์ ์๋ค.
ใด. ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ๋ก ์ ๋ฌํ๋ ๊ฒฝ์ฐ
// ์ด ๊ฒฝ์ฐ ๋ฌด์กฐ๊ฑด ๋ค์๊ณผ ๊ฐ์ด ์ต๋ช
ํจ์ ํํ๋ก ์ ์ด์ค์ผ ํ๋ค.
onPress{() => ExamFunc("๋งค๊ฐ๋ณ์")}
onPress{() => {return ExamFunc("๋งค๊ฐ๋ณ์")}}
b. return () ์ return {} ์ ์ฐจ์ด
return () ์ ํ๋์ ํ๊ทธ ํน์ ํ๋์ ๊ฐ๋ง ๋ฐํ ํ๊ฒ ๋ค๋ ์๋ฆฌ์ด๋ค.
return {} ์ ๋ค์์ ๋ฐํ๋ ,์ผ๋ก ์ด์ผ๋ฉด ๊ฐ๋ฅํด์ง๋ค.
return (
<View>
/*...*/
</View>
)
return {
setInput,
Input,
setSelectedDate,
selectedDate,
}
์ด๊ฑด ํจ์๋ฅผ ์ธ ์์๋ ๋น์ทํ๋ค.
() => ๋ช ๋ น๋ฌธ ํ๋ ํน์ () => () ์ ํด๋น ๋ช ๋ น๋ฌธ ํ๋, ํน์ ๊ดํธ์์ ๋ ํ๋์ ํ๊ทธ, ๊ฐ ๋ง ๋ฐํํ๊ฒ ๋ค๋ ์๋ฆฌ์ด๋ค.
๋ณต์์ ๋ด์ฉ์ด๋ ๋ณ์ ์ ์ธ๋ฑ์ ๋ชปํ๋ค.
๋ฐ๋ฉด () => { return ~~} ํํ๋ return ์ ์ ํด๋น ํจ์์์ ์ฐ์ผ ๋ณ์๋ค์ ์ ์ธํ ์ ๋ ์๊ณ , ๋ฐํ ๊ฐ์ ๋ ๋ฐ๋ก ์ ์ ์ ๋ ์๋ค.
c. rendering ์ด๋?
Html์ ์์, react์ ์์๋ค์ด ๋์ ๋ณด์ด๋๋ก ๊ทธ๋ ค์ง๋ ๊ฒ์ rendering์ด๋ผ ํ๋ค.
java, C++ ์์ run ํ๋ค๋ ๊ฒ๊ณผ ๋น์ทํ ํํ์ด๋ค.
d. Call-Back์ด๋?
๋ค๋ฅธ ์ฝ๋์ ์ธ์๋ก์ ๋๊ฒจ์ฃผ๋ ์คํ ๊ฐ๋ฅํ ์ฝ๋
// ์ฌ๊ธฐ์๋ props๊ฐ call-back
const ExamFunc = (props) => {
}
2. ๊พน ๋๋ฅผ ์ ์ญ์ ๊ตฌํ
(1) ๋ก์ง ์ค๊ณ๋
(2) ์ฝ๋๋ฆฌ๋ทฐ
a. Alert.alert ํจ์์ ๋ํด
์ผ๋จ onLongPress ๊ฐ () => {} ์ ์ป๋๋ฐ, return์ ์ ์ ์ด์ค ์ด์ ๋ ์ ์ธ๋ถ ์์ด ๋ด์ฉ์ด ํ๋๋ผ์ ์ด๋ค.
์ด ๊ฒฝ์ฐ return ์ ์ ์ด์ค๋ ์ ์ผํ๊ฒ ์ ํ ๊ฐ์ ๋ฐํํ๋ค.
Alert.alert ๋ถ์
Alert.alert("ํฐ msg", "ํฐ msg ๋ฐ์ ์ฃผ์(์์msg)", [
{text: "๋ฒํผ ์ด๋ฆ",
style: "cancel ์ด๋ผ๋ฉด ์ทจ์ ๋ฒํผ์ ๋ง๋ ์คํ์ผ ์ ๊ณต"
onPress : () => {"ํด๋น ๋ฒํผ ๋๋ ์ ์ ํ๋"}},
// ๋ฒํผ์ ๊ฐ์ฒด ํํ๋ก ์ญ ์ถ๊ฐ ๊ฐ๋ฅ
])
์์ ์ฒซ ๋ ์ธ์๋ ๋ฉ์ธ์ง๋ฅผ ๋ด๋นํ๊ณ , ์ธ๋ฒ์งธ ์ธ์์ธ ๋ฐฐ์ด์ ๋ฒํผ์ ์์๋ก ๋ด๋๋ค.
๋ฒํผ์ ์ ๋ถ ๊ฐ์ฒด๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , text, onPress๋ฅผ ์ ์ด์ฃผ๋ฉด ํด๋น ๋ฒํผ์ ๋๋ ์ ์ ์๋ํ๋ค.
์์ ์์์์ ์ฒซ๋ฒ์งธ ๊ฐ์ฒด๊ฐ onPress๋ฅผ ์ ์ ์ด์ค ๊ฒ์ ๋ณผ ์ ์๋๋ฐ, style: "cancel"์ด๋ฉด ํด๋น ๋ฒํผ ๋๋ฅผ ์ ์์์ ํ์ ์ฐฝ์ด ๋ซํ๋๊ฒ default๋ค.
์ง๊ธ ์ฐ๋ฆฌ๋ renderItem ๋ด๋ถ์์ ํด๋น ์์ ์ ํ๊ณ ์๋ค.
renderItem์ ๋ฐฐ์ด์ ๋ด์ฅํจ์์ธ map๊ณผ ๋๊ฐ์ ๊ธฐ๋ฅ์ ํ๋ค.
์ฐ๋ฆฌ๋ ์ง๊ธ todo ๋ฑ๊ฐ ํ๋ํ๋์ onPress (๋๋ฅผ ์ ํ๋ ๋์)์ ์ผ์ผํ ๋ค ์ค์ ํด์ฃผ๊ณ ์๋ ๊ฒ์์ ์์ผ๋ฉด ์๋๋ค.
3. ์ถ๊ฐ ๋ฒํผ ๊ตฌํ
(1) ๋ก์ง ์ค๊ณ๋
(2) ์ฝ๋๋ฆฌ๋ทฐ
(3) ํค๋ณด๋์ return ํค ๋๋ฌ๋ ์ถ๊ฐ๊ฐ ๋๋๋ก ๊ตฌํ
์์ ํจ์์์๋ ๋ณด์ด์ง๋ง
OnSubmitEditiong์ด๋ TextInput ํ๊ทธ์ ์์ฑ์ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ด๋ () => {๊ธฐ๋ฅ} ํํ์ ํจ์๋ฅผ ์ง์ด๋ฃ์ผ๋ฉด ๋๊ณ , ( )์ Event ๋ฐ์ ์๋ฅผ ๊ฐ๋ฅดํจ๋ค.
์ฌ๊ธฐ์ Event๋ ํค๋ณด๋์ return ํค๋ฅผ ๋๋ฅด๋ ๊ฒ์ ์๋ฏธํ๋ฏ๋ก
ํด๋น ๋ฒํผ ๋๋ฅผ ์ { }์์ ๊ธฐ๋ฅ์ ํ๋ค.
(4) ๊ฐ ์ ์ถํ๊ณ ๋ ๋ค์๋ input ์ฐฝ ๊น๋ํ๊ฒ ๋น์ฐ๋ ๊ฒ ๊ตฌํ
์์ฃผ ์ฝ๊ฒ resetInput์ ๊ตฌํํ๋ค.
resetInput ์
์ด๋ฒคํธ ๋ฐ์ (์ฌ๊ธฐ์ ํด๋น ํจ์ ํธ์ถ) ์ Input์ ๋น์ด๋ค๋ก ๊ตฌํํ์๋ค.
(5) ๊ฐ ์ ์ถํ๊ณ ํค๋ณด๋๊ฐ ์๋์ผ๋ก ๋ด๋ ค๊ฐ๋ ๊ฒ ๋ฐฉ์ง
TextInput์ ํด๋น ์์ฑ์ false๋ก ๋ฐ๊พธ๋ฉด ํด๊ฒฐ๋๋ค.
(6) input ์ฐฝ ๋๋ ์ ๋ ํ๋ฉด์ด ์๋์ผ๋ก todoList ๋งจ ๋์ผ๋ก ๋ด๋ ค๊ฐ๋๋ก ํ๊ธฐ.
๋จผ์ useref()์ ๋ํด ์ดํดํด์ผ ํ๋ค.
https://velog.io/@jminkyoung/TIL-13-React-Hooks-useRef-%EB%9E%80
ref๋ผ๋ useref๋ฅผ ์ด์ฉํ ๋ณ์๋ฅผ ๋ง๋ค์๋ค.
onClickReset์ด๋ผ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ณด๋ฉด,
๋ค๋ฅธ ๊ธฐ๋ฅ์ ๋ค ๋ง์น๊ณ ํด๋น ref.current.focus()๋ผ๋ ๊ธฐ๋ฅ์ ์คํํ๋ผ๊ณ ํ์๋ค.
์ด๋ ref๊ฐ ์ ํ ์์น๋ก focus ํ๋ผ๋ ๋ป์ด๋ค.
์ ํจ์๋ฅผ ๋ณด๋ฉด input ํ๊ทธ์ ref๊ฐ ์ ํ์๋ค.
์ด ๊ณณ์ด ๋ฐ๋ก ref์ currentํ ์์น์ด๋ค.
OnClickReset ์ปดํฌ๋ํธ๊ฐ ์คํ๋๋ฉด name ์ด๋ผ๋ value๋ฅผ ๊ฐ์ง input์ผ๋ก ํฌ์ปค์ฑ ๋๋ค.
๊ทธ ๋๋ฃจํ ์๋น ๊ฐ ์ฐ๋ ์ธ์ ์ด๋ ์๋ฆฌ๊ฐ ๊ฐ๋ค.
์ด ํจ์๋
flasListRes๋ useRef๋ฅผ ๋์ ํ ๋ณ์์ธ๋ฐ(์์ ์์์ ref๋ ๊ฐ์.)
ํด๋น ref๊ฐ ์ ํ ์์น ๊ฐ์ ๋งจ ๋๊น์ง Scroll ํ๋ผ๋ ๋ป์ด๋ค.
ํด๋น ์ปดํฌ๋ํธ๋ฅผ onPressAdd, onSubmitEditing ์ ๋ฃ์ด์ฃผ๋ฉด,
+๋ก ๊ฐ์ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ, retrun ํค๋ณด๋ ํค๋ก ์ถํ๋ ๊ฒฝ์ฐ ๊ธฐ๋ฅ์ ๋คํ๊ณ ์๋์ผ๋ก ๋ฆฌ์คํธ ๋งจ ๋์ผ๋ก ํฌ์ปค์ฑ ๋๋ ๊ฒ์ด๋ค.
(7) ์ถ๊ฐ์ ์ผ๋ก ์์๋ธ ์
TextInput์ onFocus ์์ฑ
ํด๋น ์์ฑ์ TextInput ์นธ์ ์ด์ ์ด ๋ง์ถฐ์ก์ ๋ {} ์์ ํจ์๋ฅผ ํธ์ถํ์ฌ ์๋์ํค๋ ๊ฒ์ด๋ค.
onFocus๋ ์์ ํจ์๋ค๊ณผ ๊ฐ์ด. FlatList ๋งจ์๋๊น์ง ์คํฌ๋กค ํ๋ผ๋ ๋ด์ฉ์ ํจ์๋ฅผ ํธ์ถํ์ฌ ๋์์ํค๋๋ก ์ค์ ํ๋ค.
๋ฐ๋ผ์
input ์ฐฝ์ ์ฌ์ฉ์๊ฐ ๋๋ ์ ๋ (๋๋ฅธ ๊ฒ === ์ด์ ์ ๋ง์ถ ๊ฒ)
ํ๋ฉด์ด ์๋์ผ๋ก List ๋์ผ๋ก ์ด๋ํ๋ค.