React

[React] 배열에 있는 데이터 삭제하기 (filter() 사용)

Alexim 2022. 6. 11. 18:44

1. App.js에서 onDelete 함수를 만든다.

2. prop으로 DiaryList에 전달해준다.

<App>

  const onDelete = (targetId) => {
    const newDiaryList = data.filter((it) => it.id !== targetId)
    setData(newDiaryList)
  }

  return (
    <div className="App">
      <DiaryEditor onCreate={onCreate} />
      <DiaryList onDelete={onDelete} diaryList={data} />
    </div>
  );

3. DiaryList에서 DiaryItem으로 onDelete 함수를 전달해준다.

4. DiaryItem에서 삭제 버튼을 만들고 onClick 이벤트 안에 prop으로 받은 onDelete를 넣어 id를 전달시켜준다.

<DiaryItem>

      <button
        onClick={() => {
          console.log(id)
          if (window.confirm(`${id}번째 일기를 정말 삭제하시겠습니까?`)) {
            onDelete(id);
          }
        }}
      >
        삭제하기
      </button>

5. 전달받은 id와 같지 않은 Diary list를 filter 한 새 배열을 만들고 일기 데이터를 필터링한 배열로 바꿔준다.

<App>

  const onDelete = (targetId) => {
    const newDiaryList = data.filter((it) => it.id !== targetId)
    setData(newDiaryList)
  }