[D-6] 항목 추가기능 구현하기

2020. 1. 25. 20:44Project 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

 

Chrome 웹 스토어

Chrome에 사용할 유용한 앱, 게임, 확장 프로그램 및 테마를 찾아보세요.

chrome.google.com

 


개발자 도구 (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