Skip to content

#31 [10장_1] 다음 컴포넌트에서 상태 관리 가이드 법칙을 위반한 곳이 있다면 알려주세요. 그리고 타입스크립트를 적용하면서 이를 리팩토링 해주세요! #49

Description

@drizzle96

❓문제

다음 컴포넌트에서 상태 관리 가이드 법칙을 위반한 곳이 있다면 알려주세요. 그리고 타입스크립트를 적용하면서 이를 리팩토링 해주세요!

import { useState } from 'react'

const TodoList = () => {
  const [tasks, setTasks] = useState([])
  const [completedTasks, setCompletedTasks] = useState([])

  const addTask = (task) => {
    setTasks([...tasks, task])
  }

  const completeTask = (index) => {
    const task = tasks[index]
    setTasks(tasks.filter((_, i) => i !== index))
    setCompletedTasks([...completedTasks, task])
  }

  return (
    <div>
      <h1>Todo List</h1>
      <ul>
        {tasks.map((task, index) => (
          <li key={index}>
            {task}
            <button onClick={() => completeTask(index)}>Complete</button>
          </li>
        ))}
      </ul>
      <div>
        <h2>Completed Tasks</h2>
        <ul>
          {completedTasks.map((task, index) => (
            <li key={index}>{task}</li>
          ))}
        </ul>
      </div>
      <input
        type="text"
        placeholder="New Task"
        onKeyDown={(e) => {
          if (e.key === 'Enter') addTask(e.target.value)
        }}
      />
    </div>
  )
}

export default TodoList

🎯답변

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions