작성
·
90
0
Editor component를 만드는 과정에서 onClickAdd 함수는 App.tsx에 남기는 이유가 궁금합니다.
강의에서는 setTodos를 호출해야 하기 때문이다 라고 말씀하셨는데, setTodos 또한 Editor component로 옮기면 안될까요?
우선 Editor로 모두 옮겼을 때 강의에서 한 것과 똑같은 기능을 하기는 하는데, 이렇게 하면 어떤 비효율적인 측면이 있는지 궁금합니다.
답변 2
0
안녕하세요 이정환입니다.
말씀하신대로 그렇게 작업하셔도 기능은 정상적으로 작동합니다. 그러나 이렇게 작업하는 이유는 자식 컴포넌트가 부모 컴포넌트의 State에 강하게 의존하지 않게 하기 위함 입니다.
setTodos 함수를 그대로 내려받아 사용하게 되면, 향후에 버튼의 동작이 다른 방식으로 변경될 때에 수정해야 할 사항이 많아지게 되는데요, 이렇게 함수로 별도로 분리해 두게 되면 함수 내부만 수정하면 되기 때문에 보다 변경에 열려있다고 볼 수 있습니다.
0
안녕하세요, 인프런 AI 인턴입니다. khhan1990님.
Editor 컴포넌트 안으로 setTodos
함수를 이동시키지 않고 App.tsx
에 onClickAdd
함수를 남기는 이유는 React의 컴포넌트 구조와 상태 관리에 관련된 베스트 프랙티스를 지키기 위함입니다.
단일 소스의 진실(SSOT, Single Source of Truth):
컴포넌트 재사용성:
setTodos
와 같은 상태 변경 함수를 하위 컴포넌트로 이동시키면 그 컴포넌트는 특정한 상태 변경 메커니즘에 의존하게 되며, 재사용성이 떨어질 수 있습니다. Editor 컴포넌트는 데이터를 추가하는 UI 역할만을 담당하며, 상태 변경에 대한 세부사항은 상위에서 관리하게 되면 모듈화가 더 명확해집니다.상태 변경의 부작용 방지:
기능적으로는 Editor로 setTodos
를 옮겨도 작동하겠지만, 유지보수와 코드 관리 측면에서 어려움이 있을 수 있습니다.
이와 관련하여 살펴볼 수 있는 유사한 질문과 답변이 존재하니, 링크를 참조하시기를 권장드립니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면,이어소개 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.