리액트의 가장 큰 장점에 대해서 이야기하자면
규모가 커지고 다양한 UI를 구현하게 되면서 유지보수하기 힘들어진 코드를 관리하기 편하게 만들어졌습니다 !
이 가장 큰 장점은 바로 Component라는 재활용 가능한 UI 구성 단위 때문입니다.
바로바로 Component가 React에서 얼마나 중요한 요소인 지를 알려주는 대목입니다.
그럼 한번 정리해보도록 하겠습니다 !
- Component
종류
Class Component
: stateful 함수라고 불리며 Component 내부에 state를 가지며 라이프사이클이 있는 컴포넌트입니다.
최근에 functuinal Component가 등장했으며 Class Component로만 Component를 만들면 성능이 악화될 수도 있습니다.
import React from 'react'
class Hanuel extends React.Component {
render() {
return (
<div>
<h1>I'm Haneul!</h1>
</div>
)
}
}
export default Haneul;
-> 클래스형 컴포넌트는 위와 같은 형태를 이루며 render 함수가 꼭 있어야 합니다.
return 안에 있는 HTML의 형태를 가진 JSX 를 반환합니다.
Functional Component
: stateless 함수로 알려져 있으며, 리렌더링이 다시 일어나지 않는 component 같은 경우에 이 함수를 이용하여 구현하면 좋습니다.
state나 Lifecycle, API를 사용하지 않을 때, 함수형 컴포넌트를 사용하면 유지보수와 성능에 좋습니다.
import React from 'react'
const Frontend = () => {
return (
<div>
<h1>I'm Frontend Developer</h1>
</div>
)
};
export default Frontend;
-> 함수형 컴포넌트는 state함수가 없으며 react hook을 사용한다면 state를 사용할 수 있다고 들었으나 아직 배우지 않아 생략하겠습니다.
⛳️ 결과적으로 현재는 Functional Component를 주로 사용하며 Class Component의 사용을 최대한 줄이는 것이 성능을 좋게 하며 유지 보수를 더 효율적으로 할 수 있는 방안입니다.
//
-하지만 저는 westagram 이라는 instagram 클론 프로젝트를 할 때 class Component를 사용했는데요.
Functional Component가 더 이용된다고는 하지만 react를 처음 배우는 입장에서 state와 props, lifecycle 그리고 API 를 연결하는 것까지 기본부터 제대로 공부하고 싶어서 Class Component를 이용해서 프로젝트를 진행했습니다.
- JSX
JavaScript Syntax Extension
JSX 란 리액트에서 사용하는 자바스크립트 확장 문법입니다.
JSX로 작성한 코드는 브라우저에서 동작하는 과정에서 바벨 을 사용하여 일반 자바스크립트 형태의 코드로 변환됩니다.
HTML 태그의 형태로 작성하기 때문에 보기 쉽고 익숙합니다.
거의 HTML와 비슷한 구조이지만 몇가지 다른 점이 있습니다.
class 를 className 으로 이름을 주며
inline style 을 줄 수 있는데 <div style={{color: "blue"}}> I'm haneul </div> 와 같이 작성합니다.
또한 안에 내용이 없는 태그는 열고 닫는 태그 둘다 필요없이 <div /> 닫는 태그만으로도 작성가능 합니다.
또한 JSX의 큰 특징으로 내부 요소를 감싸는 최상위 요소가 있어야 합니다.
그렇기 때문에 최상위 요소가 없다면
<>
<div />
<h1> 야야야야야 </h1>
<p> 호호호호호 </p>
</>
위와 같이 최상위 요소를 만들어 줄 수 있습니다.
'React' 카테고리의 다른 글
TIL no.34 - How to fetch api in React Hooks? (0) | 2020.11.08 |
---|---|
TIL no.33 - Styled Components : React (0) | 2020.11.08 |
TIL no.28 - 부모-자식 간 Lifecycle & 조건부 렌더링 : React (0) | 2020.10.25 |
TIL no.24 - CRA 무엇인가, 어떻게 ? (0) | 2020.10.11 |
TIL no.22 - [React 1탄] Why React ?! (0) | 2020.10.06 |