๐ ํํ ๋ฆฌ์ผ์ ๋ฐ๋ผํ ํ๋ก์ ํธ์ ๋๋ค!
app.js์ ์๋์ ์ฝ๋๋ฅผ ์ถ๊ฐํด์ฃผ์ธ์!
const addTodo = text => {
setTodos([
...todos,
{id: Math.random().toString(), textValue: text, checked: false},
]);
};
addTodoํจ์๋ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ํ ์คํธ๋ฅผ ์ธ์๋ก ๋ฐ์ ์๋ก์ด todo ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค. id๋ ๋๋ค์ผ๋ก ์์ฑ๋๋๋ก ํ์๊ณ , ์๋ฃ ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ checked ์์ฑ์ false๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฃผ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ํ ์คํธ๋ textValue ์์ฑ์ ๋ค์ด๊ฐ๋๋ค. ๊ธฐ์กด ํ ์ผ ๋ชฉ๋ก์ ํ์ฌ ์ํ๋ฅผ ๋ํ๋ด๋ todos๋ฅผ ์ด์ฉํด์ ๊ทธ๋๋ก ๊ฐ์ ธ์ต๋๋ค. ๋ฐ๋ผ์ setTodos ํจ์๋ฅผ ํตํด ์ด์ ์ ์๋ ๋ชฉ๋ก์ ๊ทธ๋๋ก ์ ์งํ๋ฉด์ ์๋ก์ด ๋ชฉ๋ก์ ์ถ๊ฐํ ๋ฐฐ์ด์ ์์ฑํฉ๋๋ค.
app.js์์ ๋ถ๋ถ์ ์์ ํด์ฃผ์ธ์!
<TodoInsert onAddTodo={addTodo} />
TodoInsert.js ์์ ์๋์ ์ฝ๋๋ฅผ ์ถ๊ฐํด์ฃผ์ธ์!
const TodoInsert = ({onAddTodo}) => {
...
}
// components/TodoInsert.js
import React, {useState} from 'react';
const TodoInsert = ({onAddTodo}) => {
const [newTodoItem, setNewTodoItem] = useState('');
...
}
ํ ์คํธ ๊ฐ์ ๋ฌธ์์ด(string)์ด๋ฏ๋ก ์ด๊ธฐ ์ํ๊ฐ์ ''๋ก ์ด๊ธฐํ ํฉ๋๋ค. newTodoItem๋ ์๋ก ์ ๋ ฅํ ํ ์คํธ์ ์ํ๋ฅผ ๋ํ๋ด๊ณ , setNewTodoItem์ newTodoItem์ ์ ๋ฐ์ดํธํ๋ ํจ์์ ๋๋ค.
const todoInputHandler = newTodo => {
setNewTodoItem(newTodo);
};
...
<View style={styles.inputContainer}>
<TextInput
style={styles.input}
placeholder="Add an item!"
placeholderTextColor={'#999'}
onChangeText={todoInputHandler}
value={newTodoItem}
autoCorrect={false}
/>
...
TextInput ์ปดํฌ๋ํธ์ ์์ฑ์ผ๋ก onChangeText์ ์ถ๊ฐํ์๊ณ ๊ทธ ์์ todoInputHandler๋ฅผ ๋ฃ์ด์ค๋๋ค. ๋ํ value ์์ฑ์๋ newTodoItem์ ๋ฃ์ด์ค๋๋ค. ์ด์ ์ ๋ ฅ์ฐฝ์ ํ ์คํธ๋ฅผ ์ ๋ ฅํ๋ฉด ์ค์๊ฐ์ผ๋ก ์ ๋ ฅํ ํ ์คํธ ๊ฐ์ ์ํ๊ฐ ์ ๋ฐ์ดํธ ๋๋ฉฐ newTodoItem์๋ ํ ์คํธ ๊ฐ์ ์ต์ ์ํ๊ฐ ๋ด๊ธฐ๊ฒ ๋ฉ๋๋ค.
const addTodoHandler = () => {
onAddTodo(newTodoItem);
setNewTodoItem('');
};
...
<View style={styles.button}>
<Button title={'ADD'} onPress={addTodoHandler} />
</View>
...
addTodoHandler ํจ์ ์์๋ onAddTodo์setNewTodoItem๊ฐ ์์ต๋๋ค. onAddTodo ํจ์๋ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ํ ์คํธ ๊ฐ์ ์ ๋ฌ ๋ฐ์ ๋ชฉ๋ก์ ์ถ๊ฐํ๊ณ , setNewTodoItemํจ์๋ ์ ๋ ฅ์ฐฝ์ ๊ณต๋ฐฑ์ผ๋ก ์ด๊ธฐํ ์ํค๋ ์ญํ ์ ํฉ๋๋ค.
Button ์ปดํฌ๋ํธ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ onPress ์ด๋ฒคํธ์ addTodoHandler() ํธ๋ค๋ฌ๋ฅผ ๋ฃ์ด์ค๋๋ค. ์ด์ ์ฌ์ฉ์๊ฐ ADD ๋ฒํผ์ ๋๋ฅด๋ฉด ์์ดํ ์ด ์ถ๊ฐ๋ฉ๋๋ค.