-
React에서 조건부 렌더링을 사용하는 5가지 방법Tip 2022. 12. 1. 16:19728x90
React로 개발을 하다 보면 조건부 랜더링을 사용하는 경우가 무척 많이 있습니다.
물론 그 복잡도가 낮을 경우라면 간단하게 삼항 연산자로 처리하면 되지만 복잡해지는 경우도 많기 때문에 이 글에서는 조건부 랜더링을 처리하는 다양한 방법에 대해 소개해 보겠습니다.
1. && 사용하기
조건의 값이 0, false, undefiend가 아닌 경우 render 해 주며, 가장 짧고 간결하게 사용할 수 있습니다.
const Test: React.FC<IProps> = ({ anyProp }) => { ... return ( <> ... {anyProp && <p>This is Show!!</p>} ... </> }
2. Ternary operator
True or False 형식에서 많이 사용하며 아마 React를 사용할 때 가장 많이 사용하는 방법입니다.
const Test: React.FC<IProps> = ({ isLogin }) => { ... return ( <> ... {isLogin ? <button>Logout</button> : <button>Login</button>} ... </> }
3. If... else
코드가 조금이라도 짧아지는 것을 선호하는 편이라 개인적으로는 잘 사용하지 않지만 가장 직관적이라고 생각합니다.
const Index: React.FC<IProps> = ({ isLogin }) => { ... if(isLogin) return <Home /> else return <Login /> ... }
4. Multiple Ternary operator
코드를 지저분하게 만드는 주범으로 하나쯤이야를 반복하다 보면 코드의 가독성이 저세상으로 가는 것을 실시간으로 체험할 수 있어 클린 코드를 지향한다면 개인적으로 사용하는 것을 절대 지양해야 한다고 생각합니다.
아래의 예제는 극단적으로 든 것도 있지만 최대한 깔끔하게 보이도록 노력한 점도 있습니다.
실제로 큰 페이지 중간에 2단, 3단 정도로 들어가게 되면 만들면서도 헷갈리는 경험을 할 수 있습니다.
interface IProps { userType: 'customer' | 'seller' | 'admin' | 'guest'; } const Index: React.FC<{userType:}> = ({ userType }) => { ... return ( userType === 'customer' ? <Customer /> : userType === 'seller' ? <Seller /> : userType === 'admin' ? <Admin /> : <Guest /> ); ... }
5. Object
이번 글을 쓰기로 결심한 방법으로 개인적으로 가장 깔끔하게 사용할 수 있는 방법이라고 생각합니다.
물론 가장 좋은 것은 이렇게 여러 역할을 하도록 코드를 안 짜는 게 최선이지만... 시간에 쫓기고 기획의 변경 등으로 인해 자주 사용하게 되는 것 같습니다.
interface IProps { userType: 'customer' | 'seller' | 'admin' | 'guest'; } const userTypeComponent = { customer: <Customer />, seller: <Seller />, admin: <Admin />, guest: <Guest /> } const Index: React.FC<{userType:}> = ({ userType }) => { ... return userTypeComponent[userType]; ... }
이렇게 5가지 방법이 있으며 1, 2, 5번을 자주 사용하고 있습니다.
만약 더 좋은 방법이 있다면 댓글 남겨주시면 감사하겠습니다 :)
'Tip' 카테고리의 다른 글
IOS Safari WebView 화면 확대 막기 (0) 2023.02.09 개발자에게 유용한 툴 (0) 2022.12.07 NodeJS 프로젝트 라이브러리 최신버전 자동으로 업데이트 하기 (0) 2022.11.12 메타 태그 중복 생성 방지하기 (0) 2022.10.27 window init 느리거나 useEffect 인식 안 되는 라이브러리 사용 팁 (0) 2022.09.02