Front-end/React
[리액트 클린코드 #1] 컴포넌트 관리 Extension
Kamea
2022. 5. 21. 15:19
리액트 클린코드에 관한 고민은 항상 가지고 있었다.
중구난방으로 코드를 짜다보면 코드가 So dirty... 해지기 때문에 기분이 안 좋아진다.
그러던 와중 너무 늦게 알아서 쫌 쫘증나는 extension...모두들 미리 알아서 언렁 써먹길...
아직 서버 연결을 하지 않은 컴포넌트라 코드가 더 더러운게 사실이지만 어쨌든!
내가 소개하고 싶은건 glean extension이다 누가 개발했는지는 몰라도 천재가 확실함
이것을 어떻게 쓰는지 살펴보자. 아래의 코드는 웬만한 프로젝트에서 가지고 있는 Header의 navBar 코드이다.
import React, { useState } from 'react';
export const Header = () => {
const [count, setCount] = useState(0);
setCount(24);
return (
<main>
<nav className="navbar">
<ul>
<li>Home</li>
<li>About</li>
<li>{count}</li>
<li>
<div className="dropdown">
<ul>
<li>item 1</li>
<li>item 2</li>
<li>item </li>
</ul>
</div>
</li>
3
</ul>
</nav>
</main>
);
};
물론 위의 코드를 그대로 써도 되지만 Header 컴포넌트에 nav이외에 다른 레이아웃이 많이 존재한다면 한눈에 구조를 파악하기 힘들고,
나중에 수정할 때도 헤맬 수 있다. 이제 glean을 써보자.
1. 컴포넌트로 바꾸고 싶은 tag 요소들을 드래그한다.
2. 왼쪽에 표시된 형광들을 눌러 Extract Component를 선택한다.
3. 선택 후 상단에 뜨는 이름 입력란에 컴포넌트 이름을 작성한 후 엔터를 누른다.
4. 기존 코드의 가장 아래부분에 추출된 컴포넌트 함수가 뜬다.
Header 코드가 아래와 같이 변한다. 필요에 따라 폴더를 하나 더 생성해서 export & import 하는 것도 좋을 것 같다.
import React, { useState } from 'react';
export const Header = () => {
const [count, setCount] = useState(0);
setCount(24);
return <NavBar count={count} />;
};
function NavBar({ count }) {
return (
<main>
<nav className="navbar">
<ul>
<li>Home</li>
<li>About</li>
<li>{count}</li>
<li>
<div className="dropdown">
<ul>
<li>item 1</li>
<li>item 2</li>
<li>item </li>
</ul>
</div>
</li>
3
</ul>
</nav>
</main>
);
}
이제 없으면 못 사는 Extension...