간단한 TODO reactjs 앱 만들기
8780 단어 javascriptreactnodenpm
안녕하세요 독자 여러분! React로 무언가를 만드는 것에 대한 기사를 쓰는 것은 이번이 처음입니다. Todo 앱을 구축하는 것은 쉽고 시간이 많이 걸리지 않지만 reactjs에서 몇 가지 중요한 개념을 알려줍니다. 모든 개발자가 이해해야 하는 매우 중요한 CRUD(Create, Read, Update 및 Delete)의 원리를 알려줍니다.
간단한 할 일 목록을 작성하면 페이지를 새로고침하면 할 일을 추적할 수 없습니다. 따라서 완벽한 솔루션은 아니지만 좋은 시작입니다.
Redux와 서버를 포함하는 고급 Todo 앱을 구축하는 방법을 배우겠지만 지금은 간단하게 유지하고 싶습니다.
의 시작하자...
이제 첫 번째 React Todo 앱 빌드를 시작해 보겠습니다.
npx create-react-app 할 일
이제 현재 저장소에 'todo'라는 폴더가 생성됩니다. 다음으로 todo 폴더 내부로 이동해야 합니다.
cd todo
이제 부트스트랩 라이브러리를 사용하여 스타일을 적용하는 데 도움이 되는 npm을 사용하여 필요한 라이브러리를 설치합니다.
npm install react-bootstrap bootstrap
위의 명령을 실행하면 todo 앱에 react-bootstrap 및 bootstrap 패키지가 모두 설치됩니다.
이제 앱을 빌드할 준비가 되었습니다.
앱.css
이제 스타일을 지정하기 위해 사용자 정의 CSS 코드를 작성해 보겠습니다.
.app {
padding: 30px;
background-color: #848586;
}
.todo {
display: flex;
align-items: center;
font-size: 18px;
justify-content: space-between;
}
앱.js
다음으로 App.js 파일에서 필요한 항목을 가져오는 것부터 시작하겠습니다.
import React, {useState, useEffect} from "react";
import { Button, Card, Form } from 'react-bootstrap';
import 'bootstrap/dist/css/bootstrap.min.css';
import "./App.css";
우리는 React Hooks를 사용할 것입니다.
그래서, 우리는 앱의 주요 Todo 기능부터 시작합니다.
우리는 모든 할일을 포함하고 완료 여부에 관계없이 각 할일의 상태를 전달하는 할일 목록을 정의할 것입니다. setTodos를 사용하고 useState 후크를 사용합니다.
const App = () => {
const [todos, setTodos] = useState([
{
label: "This is a sampe todo",
isDone: false
}
]);
}
다음으로 할일을 추가하는 부분으로 넘어갑니다. addTodo 함수를 정의하고 할 일 목록을 가져오고 새 할 일의 레이블을 목록에 추가하는 newTodos를 정의합니다. 그런 다음 setTodos를 사용하여 newTodos를 todo로 설정합니다.
const addTodo = (label) => {
const newTodos = [...todos, { label }];
setTodos(newTodos);
};
다음으로 Todos를 완료로 표시하는 부분으로 이동합니다. 우리는 markTodo 함수를 정의할 것입니다. 스프레드 연산자를 사용하여 newTodos에 있는 모든 할 일을 복사한 다음 인덱스를 사용하여 할 일을 완료로 표시한 다음 newTodos를 할일로 설정합니다.
const markTodo = index => {
const newTodos = [...todos];
newTodos[index].isDone = true;
setTodos(newTodos);
};
다음으로 할일을 삭제하는 부분을 이동합니다. 같은 방법으로 이번에는 인덱스를 사용하여 목록을 연결하고 인덱스가 일치하는 할일을 제거한 다음 새 할일을 설정합니다.
다음으로 할일을 삭제하는 부분을 이동합니다. 이번에는 인덱스를 사용하여 목록을 연결하고 인덱스가 일치하는 할일을 제거한 다음 새 할일을 설정합니다.
const removeTodo = index => {
const newTodos = [...todos];
newTodos.splice(index, 1);
setTodos(newTodos);
};
그런 다음 앱 기능을 마칩니다. 우리는 나중에 정의할 FormTodo 구성 요소를 사용하고 있습니다. addTodo를 매개변수로 받아들입니다.
그런 다음 모든 할일 목록을 표시합니다. 모든 할 일을 가져와서 Todo 구성 요소에 전달합니다. index, todo, markTodo 및 removeTodo 함수를 보냅니다.
return (
<div className="app">
<div className="container">
<h1 className="text-center mb-4">Todo List</h1>
<FormTodo addTodo={addTodo} />
<div>
{todos.map((todo, index) => (
<Card>
<Card.Body>
<Todo
key={index}
index={index}
todo={todo}
markTodo={markTodo}
removeTodo={removeTodo}
/>
</Card.Body>
</Card>
))}
</div>
</div>
</div>
);
이제 Todo 구성 요소를 정의합니다. 이전에 Todo 구성 요소를 호출할 때 전달한 매개 변수를 허용합니다.
우리는 각 Todo를 보여줄 일부 JSX를 반환합니다. 할 일을 완료로 표시하고 할 일을 제거하는 두 개의 버튼도 표시됩니다.
const Todo = ({ todo, index, markTodo, removeTodo }) ={
return (
<div className="todo" >
<span style={{ textDecoration: todo.isDone ? "line- through" : "" }}>{todo.label}</span>
<div>
<Button variant="outline-success" onClick={() =>
markTodo(index)}>✓</Button>{' '}
<Button variant="outline-danger" onClick={() =>
removeTodo(index)}>✕</Button>
</div>
</div>
);
}
다음으로 FormTodo 함수를 정의합니다. addTodo를 매개변수로 받아들입니다. 새로운 Todo 제출을 처리합니다. 값이 비어 있지 않으면 해당 할 일 텍스트에서 addTodo 함수를 호출한 다음 양식의 값을 다시 비어 있도록 설정합니다.
할 일을 수락하고 할 일 제출을 위한 제출 버튼이 있는 양식을 반환합니다. 제출 버튼을 클릭하면 할 일 목록에 할일이 추가됩니다.
const FormTodo = ({ addTodo }) => {
const [value, setValue] = useState("");
const handleSubmit = e => {
e.preventDefault();
if (!value) return;
addTodo(value);
setValue("");
};
return (
<Form onSubmit={handleSubmit}>
<Form.Group>
<Form.Label><b>Add Todo</b></Form.Label>
<Form.Control type="text" className="input" value=
{value} onChange={e => setValue(e.target.value)}
placeholder="Add new todo" />
</Form.Group>
<Button variant="primary mb-3" type="submit">
Submit
</Button>
</Form>
);
}
이제 App.js 파일을 살펴보겠습니다.
import React, {useState, useEffect} from "react";
import { Button, Card, Form } from 'react-bootstrap';
import 'bootstrap/dist/css/bootstrap.min.css';
import "./App.css";
const Todo = ({ todo, index, markTodo, removeTodo })
=> {
return (
<div className="todo">
<span style={{ textDecoration: todo.isDone ? "line-
through" : "" }}>{todo.label}</span>
<div>
<Button variant="outline-success" onClick={() =>
markTodo(index)}>✓</Button>{' '}
<Button variant="outline-danger" onClick={() =>
removeTodo(index)}>✕</Button>
</div>
</div>
);
}
const FormTodo = ({ addTodo }) => {
const [value, setValue] = useState("");
const handleSubmit = e => {
e.preventDefault();
if (!value) return;
addTodo(value);
setValue("");
};
return (
<Form onSubmit={handleSubmit}>
<Form.Group>
<Form.Label><b>Add Todo</b></Form.Label>
<Form.Control type="text" className="input" value=
{value} onChange={e => setValue(e.target.value)}
placeholder="Add new todo" />
</Form.Group>
<Button variant="primary mb-3" type="submit">
Submit
</Button>
</Form>
);
}
const App = () => {
const [todos, setTodos] = useState([
{
label: "This is a sampe todo",
isDone: false
}
]);
const addTodo = label => {
const newTodos = [...todos, { label }];
setTodos(newTodos);
};
const markTodo = index => {
const newTodos = [...todos];
newTodos[index].isDone = true;
setTodos(newTodos);
};
const removeTodo = index => {
const newTodos = [...todos];
newTodos.splice(index, 1);
setTodos(newTodos);
};
return (
<div className="app">
<div className="container">
<h1 className="text-center mb-4">Todo List</h1>
<FormTodo addTodo={addTodo} />
<div>
{todos.map((todo, index) => (
<Card>
<Card.Body>
<Todo
key={index}
index={index}
todo={todo}
markTodo={markTodo}
removeTodo={removeTodo}
/>
</Card.Body>
</Card>
))}
</div>
</div>
</div>
);
}
export default App;
이제 할 일 앱을 실행할 수 있습니다.
npm start
Reference
이 문제에 관하여(간단한 TODO reactjs 앱 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yousefshallah/create-a-simple-reactjs-project-567d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)