01.5. React Component

이미지
React.js 01.5. Component 앞선  01.1/01.2 React JS 특징 및 설치환경  에서 설명했듯이 컴포넌트는 특정 부분이 어떻게 생길지 정하는 선언체이며, LifeCycle API를 이용하여 컴포넌트가 화면에서 나타날 때, 사라질 때, 변화가 일어날 때 주어진 작업을 처리할 수 있고, 메서드를 만들어 기능을 붙일 수도 있다. 리액트 프로젝트에서 서로 조합이 가능한, 모듈화된 컴포넌트를 사용해 만든다. 01.5.1. 컴포넌트 생성하기 01.5.1.1. 컴포넌트 초기 코드 생성 src 디렉터리 내부에 NewComponent.js 파일 생성 termianl이나 cmd에서 명령어를 이용해 만들어도 되고, VS Code 왼쪽 사이드바에 있는 파일 목록에서 마우스 오른쪽 클릭으로 새파일을 생성해도 된다. import React, { Component } from 'react' ; class NewComponent extends Component { render() { return ( < div > 새로운 컴포넌트 < /div> ); } } export default NewComponent; 01.5.1.2. 모듈 내보내기 및 불러오기 내보내기 export default NewComponent; 불러오기 // App 컴포넌트에서 생성한 NewComponent를 불러와 사용한다. import React, { Component } from 'react' ; import NewComponent from './NewComponent' ; class App extends Component { render() { return ( < NewComponent /> );

01.4 - React JSX

이미지
React.js 01.4 JSX JSX는 자바스크립트의 확장 문법이다. // JSX Code 를 바벨로 변경하면? // JSX Code var a = ( <div>JSX Code 를 바벨로 변경하면?</div> ) // JSX Code 를 바벨로 변경한 형식 var a = React.createElement( 'div' , null , 'JSX Code 를 바벨로 변경하면?' ); 위의 코드를 보면 알 수 있듯이 JSX는 html 코드를 직접 입력하는 것과 같은 형식으로 볼 수 있다. babel-loader를 사용하여 자바스크립트로 변환할 수 있다.  JSX는 리액트용이기 때문에 공식 자바스크립트 문법은 아니다. 01.4.1 JSX 장점 01.4.1.1 보기 쉽고 익숙하다 HTML 코드를 작성하는 것과 비슷하기 때문에 가독성이 높고 작성하기도 쉽다. 01.4.1.2 오류 검사 바벨이 코드를 변환하는 과정에서 JSX에 오류를 감지해낸다. 01.4.1.3 높은 활용도 // src/index.js ReactDOM.render(<App />, document.getElementById( 'root' )); 컴포넌트를 마치 HTML 태그 쓰듯이 사용할 수 있다. 01.4.2 JSX 문법 01.4.2.1 감싸인 요소 // 에러 코드 class App extends Component { render() { return ( <p> Edit <code>src/App.js</code> and save to reload. </p>

01.3 - React 프로젝트 시작하기

이미지
React.js 01.3. React 프로젝트 시작하기 01.3.1 create-react-app을 이용한 프로젝트 생성 프로젝트 생성 $ create-react-app [ PROJECT_NAME ] 프로젝트 실행 $ yarn start http://localhost:3000/ 에서 확인을 할 수 있다. 01.3.2 CSS Module 및 Sass 적용 프로젝트 생성 후 CSS Module 및 Sass 적용을 한다. $ cd [ PROJECT_NAME ] $ yarn eject $ yarn add sass-loader node-sass classnames ※ src/index.css 파일을 먼저 삭제 한다. webpack 설정 파일 수정 // config/webpack.config.js 파일 // sass-loader 추가 // loader: require.resolve('css-loader'), 이 있는 부분에 추가 { loader : require.resolve( 'css-loader' ), options : cssOptions, }, { ... }, { loader : require.resolve( 'sass-loader' ), options : { includePaths : [paths.styles] }, }, path.js 파일 수정 // config/path.js 파일 ... publicUrl : getPublicUrl(resolveApp( 'package.json' )), servedPath : getServedPath(resolveApp( 'package.json' )), // style 적용 styl

01.1/01.2 - React JS 특징 및 설치환경

이미지
React.js 01.1. 리액트의 특징 리액트는 자바스크립트 라이브러리로 유저 인터페이스를 만드는데 사용합니다. 구조가 MVC, MVW 등인 프레임워크와 달리, 오직 V(View, 뷰)만 신경 쓰는 라이브러리 입니다. 01.1.1. 컴포넌트(Component) 리액트 프로젝트에서 특정 부분이 어떻게 생길지 정하는 선언체가 있는데, 이를 컴포넌트(Component) 라고 합니다. 컴포넌트는 다른 프레임워크에서 유저 인터페이스를 다룰 때 사용하는 템플릿과는 다른 개념 으로 재사용이 가능한 API로 수많은 기능을 내장 하고 있다. 컴포넌트 하나에서 해당 컴포넌트의 생김새와 작동 방식을 정의 한다. ※ 컴포넌트는 최초로 실행한 '초기 렌더링'과 컴포넌트의 데이터 변경으로 다시 실행되는 '리렌더링' 개념을 이해해야한다. 01.1.1.1 초기 렌더링 - render() {...} 리액트의 초기 렌더링 함수로 컴포넌트의 외형을 정의하는 역할을 한다. html 형식의 문자열을 반환하지 않고, 뷰가 어떻게 생겼고 어떻게 작동하는지 정보를 지닌 객체를 반환한다. 렌더링 작업이 끝나면 지니고 있는 정보를 사용하여 HTML 마크업(markup)을 만들고, 이를 우리가 정하는 실제 페이지의 DOM 요소 안에 주입한다. 01.1.1.2 리렌더링 - render() {...} 업데이트의 과정으로 컴포넌트의 데이터에 변화가 있을 경우 새로운 요소로 대체한다. 이 과정 또한 render() 함수가 처리를 한다. 초기 렌더링 이후 데이터가 변경될 경우 새로운 데이터를 가지고 render() 함수를 다시 호출한다. 하지만 render 함수가 반환하는 결과를 DOM으로 바로 반영하지 않고, 이전 render 함수가 만들었던 컴포넌트 정보와 현재 render 함수가 만든 컴포넌트 정보를 비교한다. 자바스크립트를 사용하여 두 가지 뷰를 비교한 후 둘의 차이를 알아내 DOM 트리를 업데이트한다. 결국 방식 자체는 루