React는 웹 프레임워크로, 자바스크립트 라이브러리의 하나로서 사용자 인터페이스를 만들기 위해 사용되는 프로그램이다. React는 Javascript에 HTML을 포함하는 JSX(Javascript XML)이라는 간단한 문법과 단방향 데이터 바인딩(One-way Data Binding)을 사용하고 있다. 그리고, 가상 돔(Virtual DOM)이라는 개념을 사용하여 웹 애플리케이션의 퍼포먼스를 최적화한 라이브러리이다.
Angular, Vue등 다른 프레임워크와는 달리 리액트는 오로지 View만을 담당하는 라이브러리인만큼 내장되어 있는 기능이 부족해 third-party 라이브러리(react-router-dom, redux)를 함께 사용한다.
React는 자기만의 문법을 가진 Angular,Vue와 달리 자바스크립트 문법을 그대로 사용
컴포넌트를 더 단순하고 간단하게 정의 가능
React Native등의 웹이 아닌 플랫폼에서도 활용 가능한 기술
React는 가상 돔을 사용하여 웹 애플리케이션의 성능을 극대화 시킴
(*가상 돔에 대해서는 따로 포스팅을 할 예정이다.)
Redux는 Javascript 상태관리 라이브러리이다. 여기서 말하는 상태(State)란, 컴포넌트 내부에서 사용되는 데이터이다.
Store는 상태가 관리되는 하나의 공간이다.
즉, Action 객체가 dispatch() 메서드에 전달 → dispatch()를 통해 Reducer를 호출 → Reducer는 새로운 Store를 생성
React는 자체적으로 state와 props를 관리할 수 있지만 컴포넌트가 많아지고 깊어지면 state의 값을 관리하기가 피곤해진다.
Redux는 state를 편하게 관리하기 위한 목적으로 사용된다.
말그대로, React-redux는 react와 redux를 연결해주는 라이브러리이다.
때문에, React-redux가 제공하는 함수는 대부분 연결하는 기능을 제공한다.
Provider 사용 예시(/src/index.js)
import React from "react"; import ReactDOM from "react-dom"; // Provider는 react-redux 라이브러리에서 가져온다. import { Provider } from "react-redux"; // createStore는 redux에서 가져온다. import { createStore } from "redux"; import App from "./components/App"; import reducers from "./reducers"; ReactDOM.render( // connect()함수에 포함된 모든 컴포넌트가 redux store를 사용할 수 있기 위해, // Provider는 최상위 레벨에서 렌더링 된다 // provider의 props로 store가 있으며 redux store를 할당한다. <Provider store={createStore(reducers)}> <App /> </Provider>, document.querySelector("#root") );
Prodiver는 최상위 레벨(root파일이 있는 index.js)에서 App.js 컴포넌트를 감싼다.
이를 통해 connect()가 포함된 모든 컴포넌트가 redux store를 사용할 수 있게 된다.
connect()함수 사용 예시
import React from 'react' // react-redux 라이브러리에서 connect를 가져옴 import { connect } from 'react-redux; class 예시컴포넌트 extends Component { render(){ return( <> <div> 예시 컴포넌트의 내용 <div> </> ) } // connect()로 컴포넌트와 redux store 연결하기 export default connect(null)(예시컴포넌트)
유익한 글이었습니다.