728x90
"리액트를 공부하는데, 자꾸 =>, ..., useEffect(() => { ... }) 이런 문법들이 헷갈려요!"
"리액트 문법이 어려운 게 아니라 ES6+가 익숙하지 않아서인 것 같아요..."
이런 고민, 많이 들어보셨죠?
React는 ES6+ 문법에 아주 깊이 의존하는 대표적인 라이브러리입니다.
이번 포스팅에서는 React를 제대로 쓰기 위해 꼭 알아야 할 ES6+ 문법을 실제 예제 중심으로 풀어보겠습니다.
그리고 이 문법들이 보안이나 코드 안정성에 어떻게 기여하는지도 함께 설명드릴게요.
🎯 왜 ES6+가 React에 필수일까?
ES6+ 문법 | React에서의 활용 예 |
Arrow Function | 이벤트 핸들러, useEffect 등에서 콜백으로 자주 사용 |
Destructuring | props나 state 값을 간편하게 추출 |
Spread/Rest 연산자 | props 전달, 배열 병합, state 업데이트 |
Template Literal | 동적 클래스명 생성, 메시지 출력 |
Class | Class형 컴포넌트 정의에 사용 (Hook 이전까지 필수) |
🔥 예제로 보는 React와 ES6+의 만남
1. 화살표 함수로 이벤트 핸들러 작성
const Button = () => {
const handleClick = () => {
alert("클릭!");
};
return <button onClick={handleClick}>Click Me</button>;
};
- this를 신경쓰지 않아도 되므로 보안상 스코프 오류를 방지할 수 있음
2. 구조 분해 할당으로 props 사용
const Profile = ({ name, age }) => (
<p>{name}님은 {age}살입니다.</p>
);
- 코드 간결성 + 의도 명확화
- 중첩 props도 쉽게 추출 가능
3. 전개 연산자로 props 전달 및 병합
const Button = (props) => {
return <button {...props}>버튼</button>;
};
const App = () => (
<Button onClick={() => alert("눌림")} className="btn" />
);
- 보안적으로는 불필요한 속성 전달 주의 (ex. dangerouslySetInnerHTML 오용 방지)
4. Template Literal로 동적 className 생성
const Card = ({ active }) => {
return <div className={`card ${active ? 'active' : ''}`}>내용</div>;
};
- 문자열 조합보다 가독성 뛰어나고 XSS 위험도 낮음
5. useEffect에서 비동기 처리와 cleanup
import { useEffect } from "react";
const Timer = () => {
useEffect(() => {
const id = setInterval(() => console.log("⏱"), 1000);
return () => clearInterval(id); // 메모리 누수 방지
}, []);
return <p>타이머 작동 중</p>;
};
- 보안과 퍼포먼스 관점에서 자원 정리(clean-up) 는 매우 중요
🛡️ 보안 관점: ES6+를 쓰면 왜 React 코드가 더 안전해지나요?
구문 | 전통 방식 위험 | ES6+ 보안 이점 |
var | 전역 오염, 스코프 오류 | let/const로 제한된 스코프 보장 |
문자열 연결 | XSS 위험 ↑ | 템플릿 리터럴로 escape 처리 용이 |
함수 중첩 | this 바인딩 오류 | 화살표 함수로 컨텍스트 고정 |
불필요한 props 전달 | 민감 정보 노출 가능성 | Rest/spread로 명시적 속성 제어 |
🛠 실전 팁: 실무에서 꼭 써보세요!
기능 | 추천 방법 | 예시 |
props 검증 | PropTypes 또는 TypeScript | Profile.propTypes = { name: PropTypes.string.isRequired } |
컴포넌트 재사용 | Spread 연산자 | <Button {...btnProps} /> |
성능 최적화 | useCallback, React.memo | 불필요한 리렌더 방지 |
코드 스플리팅 | React.lazy, Suspense | 초기 로딩 최적화 |
✅ 마무리 요약
- React와 ES6+는 궁합이 매우 잘 맞습니다.
- 최신 문법을 익히면 코드 가독성, 재사용성, 보안성이 모두 향상됩니다.
- ES6+는 단지 "문법 공부"가 아닌 실제 실무 개발에 꼭 필요한 무기입니다.
728x90
'SW개발 > JavaScript' 카테고리의 다른 글
비동기 처리와 fetch API: 실시간 날씨 정보 불러오기 실습 (0) | 2025.03.31 |
---|---|
📘 자바스크립트 ES6+ 완벽 가이드: 자바스크립트를 위한 핵심 문법 총정리 (0) | 2025.03.28 |
🚀 RESTful API 개발! Node.js + Express로 CRUD API 만들기 (0) | 2025.03.20 |