ReactJS 개념 정리 2

2023. 4. 6. 17:51React/개념정리

React 프로젝트 시작하기

1. react 프로젝트 생성하기

근데 나는 npx create-react-app hello-react를 사용했다!

npx란

npx는 패키지를 한번 실행하는 것

npx로 실행하는 경우 로컬에 설치하지 않고 원격에 있는 최신 패키지를 실행할 수 있음

 

Webpack : 번들링 도구

번들링 도구

Browserify, RequireJS, Webpack 등이 대표적

리액트 프로젝트에서는 주로 Webpack을 사용

번들링 도구를 사용하면 require (또는 import)로 모듈을 불러 왔을 때 번들링 되면서 모듈들을 파일 하나로 합쳐 줌

src/index.js를 시작으로 필요한 파일을 다 불러온 후에 파일 하나로 합쳐 주는 것

css 파일도 Webpack의 CSS-Loader가 불러옴

File-Loader는 웹폰트나 미디어 파일 등을 불러옴

Babel-Loader는 js 파일들을 불러 오면서 ES6로 작성된 코드를 ES5로 문법으로 변환해 줌

 

JSX (XML-LIKE SYNTAX EXTENSION TO ECMASCRIPT)

JSX 특징

React.js는 일반 JavaScript 문법이 아닌 JSX 문법을 사용하여 UI를 템플릿 화

JSX는 컴파일링 되면서 최적화 되므로 빠름

Type-safe 하며 컴파일링 과정에서 에러를 감지 할 수 있음

HTML과 비슷한 문법으로 작성하면 이를 React.createElement를 사용하는 자바스크립트 형태로 변환시켜 줌(http://bit.ly/2FJsJmo)

JSX를 사용했을 때와 사용하지 않았을 때를 비교하고 싶다면 다음 링크들을 참고

- JSX 사용 : https://jsfiddle.net/reactjs/69z2wepo/

class Hello extends React.Component {
  render() {
    return <div>Hello {this.props.name}</div>;
  }
}

ReactDOM.render(
  <Hello name="World" />,
  document.getElementById('container')
);

- JS 사용 : https://jsfiddle.net/reactjs/5vjqabv3/

class Hello extends React.Component {
  render() {
    return React.createElement("div", null, "Hello ", this.props.name);
  }
}

ReactDOM.render(
  React.createElement(Hello, {name: "World"}),
  document.getElementById('container')
);

 

Nested Element

컴포넌트에서 여러 Element를 렌더링 해야 할 때, 그 Element들은 필수적으로 container element 안에 포함 시켜 줘야 함

단순히 감싸기 위해서 새로운 div를 사용 하고 싶지 않다면, Fragment 라는 것을 사용(v16.2 에 도입)

>>     <></>로 감싸도 된다고 함

Javascript Expression

JSX 안에서, JavaScript 표현을 사용하는 방법은 매우 간단

{ } 로 wrapping 하면 됨

꼭 닫아야 하는 태그

닫아야 오류가 안뜸

If-Else 문 사용 불가

JSX 안에서 사용되는 JavaScript 표현에는 If-Else 문이 사용 불가

이에 대한 대안은 삼항연산자 ( condition ? true : false ) 표현을 사용

반면 AND 연산자의 경우 조건식이 true 일 때만 보여주고 false 경우 아무것도 출력하지 않을 때 사용함

 

React의 Component

컴포넌트에서 다루는 데이터

props와 state

props

부모 컴포넌트가 자식 컴포넌트에게 주는 값

자식 컴포넌트에서는 props를 받아 오기만 하고 props를 수정 할 수 없음

 

state

컴포넌트 내부에서 선언

내부에서 값을 변경가능

defaultProps

PropTypes

props의 type을 지정할 때는 propTypes를 사용

defaultProps와 propTypes

class 내부에서 transform-class-properties 문법을 사용하여 설정 할 수도 있음

필수 propTypes 설정

propTypes를 설정할 때 뒤에 isRequired를 붙여 주면 됨

함수형 컴포넌트 

props만 받아와서 보여 주기만 하는 컴포넌트의 경우에는 함수 형태로 컴포넌트를 작성할 수 있음

state

컴포넌트 내부에서 읽거나 변경할 수 있는 값을 사용 하려면 state를 사용 해야 함

언제나 기본값을 미리 설정 가능

this.setState() 메서드를 통해서만 값을 변경할 수 있음

state 초기값 설정

constructor 메서드 안에서 state의 초기값을 설정할 수 있음

state 값 변경

state 값을 업데이트 할 때는 this.setState() 메서드를 사용

this.setState({

수정할 필드 이름: 값 ,

수정할 또 다른 필드 이름 : 값

});

state 를 constructor에서 꺼내기

Counter 예제

 

'React > 개념정리' 카테고리의 다른 글

ReactJS 개념 정리 3  (0) 2023.04.07
Virtual DOM, 가상 돔 이란?  (0) 2023.03.27
컴포넌트 생명주기 메서드  (0) 2023.03.27
7. React hooks[3] - useReducer란?  (0) 2023.03.25
7. React hooks[2] - useEffect란?  (2) 2023.03.25