在 React 刪除 todo 的方法

| 1 min read

觀念:在 parent 處理 function -> 當作 props 傳下去給 child -> child 再呼叫這個 function

parent(App.js) 傳給 child(TodoItem.js)


todos.filter(todo => todo.id !== id) true 的東西會留下來

可以用下面這了例子來思考 [1, 2, 3].filter(i => i > 1) 大於 1 的會留下來

App.js

function App() {

  ...

  const handleDeleteTodo = id => {  // 接收 id 當作參數
    setTodos(todos.filter(todo => todo.id !== id))
  }

  return (
    <div className="App">

      ...

      // 把 handleDeleteTodo 傳下去給 child
      {
        todos.map(todo => <TodoItem key={todo.id} todo={todo} handleDeleteTodo={handleDeleteTodo}/>)
      }
    </div>
  );
}

TodoItem.js

// 接收 handleDeleteTodo 就可以使用了
function TodoItem({ className, size, todo, handleDeleteTodo }) {
  return (
    <>
      ...
      <ReButton
        onClick={() => {
          handleDeleteTodo(todo.id)
        }}
      >
        刪除
      </ReButton>
      ...
    </>
  )
}