카테고리 없음

내일배움캠프 React트랙 35일차 회고 (2022.12.19)

ecoEarth 2022. 12. 19. 23:35

ToDoList.jsx

import React, { useState } from "react";
import AddTodo from "../AddTodo/AddTodo";

export default function ToDoList() {
  const [todos, setTodos] = useState(initialState);
  const handleAdd = (todo) => setTodos([...todos, todo]);
  return (
    <section>
      <ul>
        {todos.map((item) => (
          <li key={item.id}>{item.text}</li>
        ))}
      </ul>
      <AddTodo onAdd={handleAdd} />
    </section>
  );
}
const initialState = [
  { id: "123", text: "장보기", status: "active" },
  { id: "124", text: "공부하기", status: "active" },
];


AddTodo.jsx

import React, { useState } from "react";

export default function AddTodo({ onAdd }) {
  const [text, setText] = useState("");
  const handleChange = (e) => setText(e.target.value);
  const handleSubmit = (e) => {
    e.preventDefault();
    console.log(e.target);
    text.trim().length === 0
      ? alert(`한글자 이상을 입력하셔야합니다.`)
      : onAdd({ id: "고유한값", text, satus: "active" });
    setText("");
  };
  return (
    <form onSubmit={handleSubmit}>
      <input
        type="text"
        placeholder="Add Todo"
        value={text}
        onChange={handleChange}
      />
      <button>Add</button>
    </form>
  );
}

3번째줄에 { onAdd} 가 어떻게 곧바로 들어갈 수 있는지 이해가 안갔다.  아래와 같은 구조분해할당을 거치지 않았기 때문이다.

const { onAdd } = props;

이에 관해 찾아보니, key와 value가 같을 때 value의 값을 적어주지 않더라도 사용가능한 '단축문법'과 같은 이치로 받아들이면 될 것 같다.

argument:함수를 호출, 사용할때 / parameter:함수를 선언, 정의할때

 

    e.target.value.trim().length === 0 (x)
    text.trim().length === 0 (o)

유효성검사시 event객체가 <form>태그의 자식까지 관여하지않고, <form>태그가 적힌 15번째에서 발생한 이벤트의 객체만 반환하기때문에 아래줄이 올바른 작성코드이다.


react-icons라이브러리

yarn add react-icons
https://react-icons.github.io/react-icons/search?q=trash
import { HiTrash } from "react-icons/hi";
        <HiTrash />

⚠️import할때 react-icons/뒤에 사용하고자하는 아이콘의 접두사를붙여줄것.