2023. 1. 5. 00:22ㆍReact
⚡️ 상수 데이터란?
페이지를 구성하다 보면 UI 구성에 필요하지만 동적으로 변하지 않아서 백엔드 API 등을 통해 가져올 필요가 없는 데이터들이 있습니다. 이런 데이터들을 상수 데이터로 만들어 UI를 구성할 수 있습니다. 즉 상수 데이터란 이름 그대로 변하지 않는 정적인 데이터를 의미합니다.
⚡️ 상수 데이터를 사용하는 이유?
반복되는 UI를 하드코딩으로 일일이 만들어두게 되면 코드가 길어져서 가독성에 좋지 않고
수정이 필요할 시 해당하는 부분을 찾기 힘들어 유지보수가 어렵다는 문제가 있습니다.
하지만 상수 데이터를 활용하면 Array.map() 메서드와 조합해서 반복되는 UI를 보다 간결하게 표현할 수 있습니다.
이후 수정이 필요한 경우 레이아웃은 map 메서드에서 return하는 JSX 부분만,
내용은 상수 데이터 부분만 수정해주면 되기 때문에 유지보수 또한 용이해집니다.
⚡️ 상수 데이터 활용 전
import React from 'react';
const Footer = () => {
return (
<footer>
{/* 생략 */}
<ul>
<li>
<a href="https://github.com/terms">Terms</a>
</li>
<li>
<a href="https://github.com/privacy">Privacy</a>
</li>
...
<li>
<a href="https://github.com/about">About</a>
</li>
</ul>
</footer>
);
};
export default Footer;
⚡️ 상수 데이터 활용
1. 선언한 상수 데이터와 map 메서드를 활용해 실제 코드에 적용
// Footer.js
import React from 'react';
const Footer = () => {
return (
<footer>
{/* 생략 */}
<ul>
{FOOTER_INFO_LIST.map((info) => (
<li key={info.id}>
<a href={info.link}>{info.text}</a>
</li>
))}
</ul>
</footer>
);
};
export default Footer;
const FOOTER_INFO_LIST = [
{ id: 1, link: 'https://github.com/terms', text: 'Terms' },
{ id: 2, link: 'https://github.com/privacy', text: 'Privacy' },
...
{ id: 11, link: 'https://github.com/about', text: 'About' },
];
2. map 메서드에서 return하는 javascript를 컴포넌트화하고, props로 넘겨주는 방식으로도 활용
// Footer.js
import React from 'react';
const Footer = () => {
return (
<footer>
{/* 생략 */}
<ul>
{FOOTER_INFO_LIST.map((info) => (
<FooterInfo key={info.id} link={info.link} text={info.text} />
))}
</ul>
</footer>
);
};
export default Footer;
⚡️ 선언 위치
1. 컴포넌트 파일 내부에서 선언
⓵ 상수 데이터가 해당 컴포넌트 내에서만 사용되고 가독성을 해치지 않는다면, 컴포넌트 파일 내부에서 상수 데이터를 선언해 사용
⓶ 컴포넌트의 state나 props 등, 컴포넌트 리렌더링 시 변하는 값을 포함하는 상수 데이터는 컴포넌트 내부에서 작성
⓷ 컴포넌트가 리렌더링 될 때마다 새로 선언되고 할당될 필요가 없는 상수 데이터는 컴포넌트 외부에서 작성
// Footer.js
import React from 'react';
const Footer = () => {
return (
<footer>
{/* 생략 */}
<ul>
{FOOTER_INFO_LIST.map((info) => (
<FooterInfo key={info.id} link={info.link} text={info.text} />
))}
</ul>
</footer>
);
};
export default Footer;
const FOOTER_INFO_LIST = [
{ id: 1, link: 'https://github.com/terms', text: 'Terms' },
{ id: 2, link: 'https://github.com/privacy', text: 'Privacy' },
...
{ id: 11, link: 'https://github.com/about', text: 'About' },
];
2. 별도 파일로 분리
⓵ 상수 데이터가 해당 컴포넌트 뿐만 아니라 다른 컴포넌트에서도 공통적으로 사용되는 경우
⓶ 상수 데이터의 길이가 너무 길어서 가독성을 해치는 경우
// data.js
export const FOOTER_INFO_LIST = [
{ id: 1, link: 'https://github.com/terms', text: 'Terms' },
{ id: 2, link: 'https://github.com/privacy', text: 'Privacy' },
...
{ id: 11, link: 'https://github.com/about', text: 'About' },
];
이 경우, 해당 파일에서 export한 상수 데이터를 사용할 컴포넌트에서 import하여 사용
// Footer.js
import React from 'react';
import { FOOTER_INFO_LIST } from './data';
const Footer = () => {
return (
<footer>
{/* 생략 */}
<ul>
{FOOTER_INFO_LIST.map((info) => (
<li key={info.id}>
<a href={info.link}>{info.text}</a>
</li>
))}
</ul>
</footer>
);
};
export default Footer;
⚡️ Summary
- 상수 데이터란 UI 구성에 필요하지만 동적으로 변하지 않아서 백엔드 API 등을 통해서 가져올 필요가 없는 정적인 데이터입니다.
- 반복되는 UI 구조는 상수 데이터와 map 메서드를 활용해 간결하게 표현할 수 있습니다.
- 상수 데이터를 활용하면 UI를 효율적으로, 확장성 있게 구성할 수 있으며 유지보수가 용이합니다.
- 상수 데이터는 컴포넌트 파일 내부에서 선언하거나, 별도의 파일로 분리해서 사용할 수 있습니다.
'React' 카테고리의 다른 글
[React] Mock Data (1) | 2023.01.05 |
---|---|
[React] .env 파일에 환경변수에 넣어쓰기 (0) | 2022.12.19 |
[React] menu tab 구현 (0) | 2022.11.05 |
[React] useParams (0) | 2022.10.26 |
[React] 로그인, 회원가입 API 통신 (0) | 2022.10.25 |