[D-6] 항목 추가기능 구현하기
2020. 1. 25. 20:44ㆍProject D (ToDoList)
반응형
src/components
TodoInsert.js
더보기
import React, { useState, useCallback } from 'react';
import { MdAdd } from 'react-icons/md';
import './TodoInsert.scss';
const TodoInsert = ({ onInsert }) => {
const [value, setValue] = useState('');
const onChange = useCallback(e => {
setValue(e.target.value);
}, []);
const onSubmit = useCallback(
e => {
onInsert(value);
setValue('');
e.preventDefault(); //새로고침 방지
},
[onInsert, value],
);
return (
<form className="TodoInsert" onSubmit={onSubmit}>
<input
placeholder="할 일을 입력하세요."
value={value}
onChange={onChange}
/>
<button type="submit">
<MdAdd />
</button>
</form>
);
};
export default TodoInsert;
리액트 개발자 도구 (React Developer Tools) 설치
크롬 웹 스토어 > React Developer Tools
https://chrome.google.com/webstore/category/extensions
개발자 도구 (React Developer Tools) 로 데이터 확인
src/
App.js
더보기
import React, { useState, useRef, useCallback } from 'react';
import TodoInsert from './components/TodoInsert';
import TodoList from './components/TodoList';
import TodoTemplate from './components/TodoTemplate';
const App = () => {
const [todos, setTodos] = useState([
{
id: 1,
text: '리액트 기초',
checked: true,
},
{
id: 2,
text: '컴포넌트 스타일링',
checked: true,
},
{
id: 3,
text: '일정 관리 앱 제작',
checked: false,
},
]);
const nextId = useRef(4);
const onInsert = useCallback(
text => {
const todo = {
id: nextId.current,
text,
checked: false,
};
setTodos(todos.concat(todo));
nextId.current += 1;
},
[todos],
);
return (
<TodoTemplate>
<TodoInsert onInsert={onInsert} />
<TodoList todos={todos} />
</TodoTemplate>
);
};
export default App;
항목 추가 기능 구현
반응형
'Project D (ToDoList)' 카테고리의 다른 글
[D-8] 항목 수정기능 구현하기 (0) | 2020.01.25 |
---|---|
[D-7] 항목 삭제기능 구현하기 (0) | 2020.01.25 |
[D-5] 기본 기능 구현하기 (0) | 2020.01.25 |
[D-4] 컴포넌트 스타일링 (0) | 2020.01.24 |
[D-3] 컴포넌트 UI 구성 (0) | 2020.01.24 |