React/일정관리 프로젝트
[React TodoList] 리액트 투드리스트 마무리 - 깃허브, 파일 정리
Judith Hopps
2023. 3. 15. 12:01
반응형
프로젝트 마무리
파일 정리
1. 컴포넌트 폴더 생성
컴포넌트는 Component 폴더로,
Scss는 Scss 폴더로 이동하기
2. App.js 수정
- bulk 데이터 수정
- useReducer => useState로 수정
import React , {useCallback, useRef, useState} from "react";
import TodoTemplate from "./Component/TodoTemplate";
import TodoInsert from "./Component/TodoInsert";
import TodoList from "./Component/TodoList";
const App = () => {
const [todos,setTodos] = useState([
{
id :1,
text : '리액트의 기초 알아보기',
checked : true },
{
id :2,
text : '리액트의 스타일링해 보기',
checked : true },
{
id :3,
text : '일정 관리 앱 만들어 보기',
checked : false },
{
id :4,
text : '리액트 컴포넌트 이해하기',
checked : false },
{
id :5,
text : '리액트 네이티브 기초 알아보기',
checked : false },
]);
const nextId = useRef(6);
const onInsert = useCallback(
text => {
const todo = {
id : nextId.current,
text,
checked :false,
};
setTodos(todos=> todos.concat(todo))
nextId.current +=1;
},[],
)
const onRemove = useCallback(
id => {
setTodos(todos=> todos.filter(todo=>todo.id !== id))
},[]
)
const onToggle = useCallback(
id => {
setTodos(
todos=> todos.map(todo =>
todo.id === id ? {...todo, checked:!todo.checked}:todo,)
)
},[]
)
return (
<TodoTemplate>
<TodoInsert onInsert={onInsert}/>
<TodoList todos={todos} onRemove={onRemove} onToggle={onToggle} />
</TodoTemplate>
)
}
export default App;
깃허브
https://judithhopps.github.io/TodoList/
React App
judithhopps.github.io
반응형