개발자
안녕하세요. 최근 바닐라 자바스크립트를 지나고 리액트를 공부하기 시작학 대학생입니다. 다름이아니라 리액트의 컴포넌트는 재사용성을 위해 작성한다는 글을 보았는데, 이 재사용에 관해 정확한 의미가 무엇인지 너무 헷갈리게되어 질문을 올리게되었습니다. 코드의 재사용성이라는 것은 여러 페이지에서 "정확히 같은 기능"을 하는 코드를 일반화하여 작성하는것인가요? 아니면 전자에 해당하는 좁은 범위의 같은 기능에 대해 일반화하여 작성하고 특정 기능을 추가만 하는것인가요? 전자의 경우라면 컴포넌트 파일 하나로 여러곳에서 쓰기때문에 재사용성이 좋은것인지... 제 문해력이 부족한 탓인지 정말 너무 헷갈립니다,,
답변 2
익명
작성자
2022년 11월 02일
어라 공식문서 조금 더 정독했더니 뭔가 갈피가 잡히는것 같습니다만 공통 기능의 범위를 지정하여 컴포넌트를 만들고 props과 훅을 통해 역할을 나누는것 예를 들어 input 태그를 컴포넌트로 작성하였다면 props.type 값만 제어하여 같은 input이지만 타입만 다른 요소들을 여러개 만들 수 있다는것이 재사용성.. 제가 제대로 이해한게 맞나요??
간결하게 먼저 답변드리면, 디자인과 기능이 모두 동일해야만 컴포넌트로 만드는 것은 아닙니다. 서로 디자인과 기능상에 약간의 차이가 있어도 각각 새로 만드는 것보다 재사용하는 것이 "작업 공수"가 덜 들 거란 판단이 들면 컴포넌트로 만들고, 그렇지 않은 경우에는 보통 만들지 않습니다. 하지만 "작업 공수"에 대한 판단은 주관적이기도 하며, 같은 대상을 바라보더라도 개발자의 컴포넌트 설계 능력에 따라 누군가에게는 재사용하기 어렵다는 판단 하에 컴포넌트를 만들지 않는 반면 누군가는 재사용가능하도록 만들어내는 것이 가능하기도 합니다. 마지막으로 말씀하신 "공통 기능의 범위를 지정하여 컴포넌트를 만들고 props와 훅을 통해 역할을 나누는 것"의 개념은 잘 이해하신 것 같습니다만, 제가 알고있는 바로는 props를 통해서만 역할을 나누는 것으로 알고있어서 훅은 어떤 의미로 함께 이야기했는지 조금 의문이 드는데요, 혹시 참고하신 링크 알려주시면 저도 알아가는 입장으로 좀 더 공부해보도록 하겠습니다. 추가로 아래 링크도 참고해보시면 아직은 완벽히 이해하시기엔 조금 어려우실 수도 있으나, 실무에서는 어떻게 재사용가능한 컴포넌트를 만들어내는지 어느정도 감이 잡히실 것 같습니다. https://jbee.io/web/components-should-be-flexible/
익명
작성자
2022년 11월 03일
마지막에 말씀해주신 훅에 관한 언급은 제가 훅을 제대로 이해하지 못한 상태에서 말씀드린것 같습니다. 다행히 선배님의 답변을 통해 조금 더 찾아보니 props와 훅이 아닌 props와 state를 언급했어야했던것 같습니다. 또 props와 state에 대해 한번 더 공부하게 되었습니다. 가르침 주셔서 감사합니다 !👍🏻👍🏻https://stackoverflow.com/questions/27991366/what-is-the-difference-between-state-and-props-in-react
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!