4.3 새 항목 등록하기
이제 App 컴포넌트의 todos 상태에 따라 화면에 할일 항목이 나타납니다. AddTodo 컴포넌트 기능을 마저 구현해 할일을 등록해봅시다.
우선 App 컴포넌트에 onInsert라는 함수를 다음과 같이 구현한 다음, 해당 함수를 AddTodo의 Props로 설정해주세요.
App.js
(...) function () { const today new Date(); const [todos, setTodos] ([ {id 1, text '작업환경 설정', done true}, {id 2, text '리액트 네이티브 기초 공부', done false}, {id 3, text '투두리스트 만들어보기', done false}, ]); const onInsert = text => { // 새로 등록할 항목의 id를 구합니다. // 등록된 항목 중에서 가장 큰 id를 구하고, 그 값에 1을 더합니다. // 만약 리스트가 비어있다면 1을 id로 사용합니다. const nextId = todos.length > 0 ? Math.max(...todos.map(todo => todo.id)) + 1 : 1; const todo = { id: nextId, text, done: false, }; setTodos(todos.concat(todo)); }; return ( <SafeAreaProvider> <SafeAreaView edges={['bottom']} style={styles.block}> <KeyboardAvoidingView behavior={Platform. ({ios 'padding'})} style={styles.avoid}> <DateHead date={today} /> {todos.length === 0 ? <Empty /> : <TodoList todos={todos} />} <AddTodo onInsert={onInsert} /> </KeyboardAvoidingView> </SafeAreaView> </SafeAreaProvider> ); } (...)