사용자 인터페이스를 만들기 위한 JavaScript 라이브러리
: 페이스북에서 만들었으며 현재 프론트엔드에서 가장 많이 사용되어지고 있는 라이브러리이다.
React.js는 Vue.js와 마찬가지로 가상 돔(Virtual DOM)을 사용한다. 그렇기 때문에 변경사항이 모두 반영된 가상돔을 만들어 이전 상태 값과 수정사항을 비교하여 달라진 부분만 돔에게 한 번에 전달하여 렌더링을 진행한다.
명령형 프로그래밍과 선언형 프로그래밍 중 리액트는 선언형 프로그래밍에 해당한다.
[명령형 프로그래밍] | [선언형 프로그래밍] |
---|---|
for 문을 사용해 과정이 명시적이다. | map 메소드를 사용해 목적이 명시적이다. |
React.js는 Vue.js와 마찬가지로 재사용이 가능한 컴포넌트로 웹 페이지를 구성한다.
단, Vue.js와는 다르게 컴포넌트 로직은 템플릿이 아닌 JavaScript로 작성된다.
[react의 컴포넌트] | [vue의 컴포넌트] |
---|---|
return() 안에 html 태그 작성 | template 태그 안에 html 태그 작성 |
[클래스형 컴포넌트] | [함수형 컴포넌트] |
---|---|
컴포넌트를 렌더링하는 render() 메소드 안에 return() | render() 메소드 없이 바로 return() |
양방향 데이터 바인딩을 지원하는 Vue와는 다르게 React는 단방향 데이터 바인딩을 사용한다.
데이터는 위에서 아래 즉, 부모에서 자식 한 방향으로 만 전달되며 부모의 데이터를 변경하기 위해서는 state를 사용해야 한다.
JavaScript에 XML을 추가한 문법으로 JavaScript와 HTML을 동시에 사용할 수 있다.
[예시 코드]
name
이라는 변수를 선언한 후 중괄호로 감싸 JSX 안에서 사용
if
구문 및 for
loop 안에 사용, 변수에 할당, 인자로서 받아들이고, 함수로부터 반환할 수 있다.camelCase
프로퍼티 명명 규칙을 사용한다.class
는 className
이 되고 tabindex
는 tabIndex
가 된다.const element = <a href="https://www.reactjs.org"> link </a>;
const element = <img src={user.avatarUrl}></img>;