🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

결국 이 코드에선 안티패턴 제거가 안된게 아닌가 싶어서 문의드립니다.

20.08.04 08:51 작성 조회수 158

1

안녕하세요.

"상위 컴포넌트의 데이터를 하위 컴포넌트로 전달한 후 하위 컴포넌트에서 변경(변형)하지 말아야 한다"

즉 컴퍼넌트 안의 data를 직접 변경하는게 하위 컴퍼넌트와의 이벤트 버스를 통해 변경하는것보다는 좋다.

이 부분에는 전적으로 동의합니다. 어찌보면 당연한 내용이기도 하고요.


근데 궁금한건 이 코드는 결국엔 toggleOneItem() 함수를 실행하면서 인자로 받은 todoItem을 localStorage에 담을땐 그대로 하위 컴퍼넌트의 값을 이용한게 아닌가 싶어서요.

말씀하신대로 리펙토링한다면 아래와 같이 추가로 더 수정해야 할듯 한데 어떻게 생각하시는지 궁금합니다.

localStorage.removeItem(this.todoItems[index].item);
localStorage.setItem(this.todoItems[index].item, JSON.stringify(this.todoItems[index]));

답변 1

답변을 작성해보세요.

1

안녕하세요 성창님 좋은 질문입니다 :) 특정 컴포넌트에서 다른 컴포넌트에서 넘겨 받은 데이터를 변경하지만 않는다면 어떤 식으로 코드를 짜시더라도 크게 문제가 되진 않습니다 :) 말씀해 주신 방향도 좋은 것 같아요! :)

채널톡 아이콘