[React] 간단한 투두리스트 만들기
리액트를 다루는 기술 10장 일정 관리 웹 애플리케이션 만들기를 보면서 만든 투두리스트 앱입니다. 할 일 추가, 체크, 삭제 기능에 수정하기 기능을 덧붙였습니다.
velog.io
nodejs, react 설치하고
create-react-app 앱을 생성
**폴더 이름 만들때 반드시 소문자 **
create-react-app .
npm install classnames react-icons saas
npm start run
https://react-icons.github.io/react-icons/
React Icons
React Icons Include popular icons in your React projects easily with react-icons, which utilizes ES6 imports that allows you to include only the icons that your project is using. Installation (for standard modern project) npm install react-icons --save Usa
react-icons.github.io
App.js
import './App.css';
import TodoInsert from './components/TodoInsert';
import TodoTemplate from './components/TodoTemplate';
function App() {
return (
<TodoTemplate>
<TodoInsert></TodoInsert>
{/* <TodoListItem></TodoListItem> */}
</TodoTemplate>
);
}
export default App;
TodoListItem.js
import {
MdCheckBoxOutlineBlank,
MdCheckBoxckBox,
MdRemoveCircleOutline
} from 'react-icons/md';
import './TodoListItem.scss';
const TodoListItem = ({children}) => {
return(
<div className='TodoListItem'>
<div className='checkbox'>
<div className='text'>할일</div>
</div>
<div className='remove'>
<MdRemoveCircleOutline/>
</div>
</div>
)
}
export default TodoListItem;
TodoInsert.js
import {MdAdd} from 'react-icons/md';
import './TodoInsert.scss';
const TodoInsert = ({children}) => {
return(
<form className='TodoInsert'>
<input placeholder='할 일 입력하세요'></input>
<button type='submit'>
<MdAdd/>
</button>
</form>
)
}
export default TodoInsert;
TodoTemplate.js
import './TodoTemplate.scss';
const TodoTemplate = ({children}) => {
return(
<div className='TodoTemplate'>
<div className='app-title'>일정관리</div>
<div className='content'>{children}</div>
</div>
)
}
export default TodoTemplate;
TodoTemplate.scss
.TodoTemplate{
width: 512px;
margin-left:auto;
margin-right:auto;
margin-top : 6rem;
border-radius: 4px;
overflow: hidden;
.app-title{
background-color:aquamarine;
color:black;
height:4rem;
font-size:1.5rem;
display:flex;
align-items:center;
justify-content: center;
}
.content{
background-color: white;
}
}
TodoInsert.scss
.TodoInsert{
display:flex;
background:#495057;
input{
width:100%;
background:none;
outline: none;
border:none;
padding:0.5rem;
font-size:1.135rem;
line-height:1.5;
color : white;
flex:1;//?
}
button{
background:none;
outline: none;
border:none;
padding:0.5rem;
color : white;
padding-left:1rem;
padding-right:1rem;
font-size:1.5rem;
align-items: center;
cursor: pointer;
&:hover{
background: #adb5bd;;
}
}
}