Etc/Frontend

[생활코딩-React] 수업소개부터 render함수까지

z.zzz 2021. 3. 13. 14:18
 

React와 수업소개

component : 사용자 정의 태그

    - 장점 : 가독성, 재사용성, 유지보수

 

개발환경의 종류

1. 공식문서에 익숙해지기(reactjs.org/docs/getting-started.html)

2. npm : node js로 만들어진, 앱을 다운로드하기 위한 도구

 

npm을 이용해서 create react app 설치

npm : 프로그램 설치 

   + npx : 설치 없이 리액트 사용

          - 장점 : 항상 최신 버전으로 쓸 수 있으며 컴퓨터 공간을 덜 차지함

          - 단점 : 항상 다운받아야 하는 번거로움

 

샘플 웹앱 실행

  • npm run start

      - Local : http://localhost:3000        

      - On Your Network:  http://192.168.1.101:3000

           : 개발 중인 앱을 확인할 수 있는 주소

  • run 중단 : Ctrl+C

 

JS 코딩하는 법

  • index.js : 진입 파일

      - <App> : 리액트로 만든 컴포넌트

      - document.getElementById('root') : index.html의 root를 가져와 실행시킴

※ 리액트는 반드시 하나의 태그 안에 나머지 태그가 들어가야 함

 

배포하는 법

실제 서비스 시엔 build 문서를 사용

   - 방법 : npm run build (build라는 디렉터리가 추가됨)

 


컴포넌트 만들기(1)

1. 컴포넌트를 만들 때 하나의 최상위 태그로 시작해야 함

 

props

기능 : 속성을 일괄적으로 적용할 수 있음. 사용자 정의 태그 ( attribute == props)

   예) this.props.title

 

Component 파일로 분리하기

1. src/components 폴더 생성

2. component_name.js 파일 생성

3. 해당 파일에서 component 에러 발생

    => import {Component} from 'react';

4. 컴포넌트를 다른 파일에서 쓸 수 있게 하는 export문 추가

   => export default App;

5. App.js에서 컴포넌트를 import

   => import Subject from "./components/Subject";

 

State 소개

state와 props

- props : 사용자가 제품을 조작하는 부분

    예) <Component props_name = "props_value">

- state : props값에 따라 내부 구현에 필요한 데이터

 

State 사용

props가 

   - 따옴표('') : 문자로 실행

   - 중괄호({}) : 자바스크립트 코드로 실행

[ state 사용방법 ]

1. constructor로 props 초기화, 함수 내부에서 초기화 내용 설정

2. return()에 있는 태그에서 {this.state. 컴포넌트명. 속성명}으로 constructor에서 설정한 초기화 내용을 사용

//component 초기화
  constructor(props){
   super(props);
    
    this.state = {
      Subject:{title:'WEB',sub:'World Wide Web!'}
    }
  }
 
<Subject 
    title={this.state.Subject.title} 
    sub={this.state.Subject.sub}>
</Subject>
cs

 

key

목록을 가지는 태그에서 각각의 항목은 key라는 props를 가져야 함

부모인 App의 입장 : state라는 내부 정보를 사용, 자식인 TOC.js에게 전달할 땐 props로 전달

   => App은 TOC.js가 어떻게 작동하는지 알 필요 없음

 

[ key값 지정 방법 ]

1. App.js의 constructor에서 contents를 받아 data라는 변수로 TOC에 전달

2. TOC.js의 render()에서 data를 받아 lists에 넣음

3.. TOC.js의 return()에서 <ul> {lists} </ul>로 리스트 출력

 

이벤트 state props 그리고 render 함수

  • 계획 : 링크 클릭 -> app 컴포넌트의 state가 바뀜 -> 바뀐 state가 props의 값으로 전달되면서 동적인 효과

 

  • state 바뀜

      -> 그 state를 가진 컴포넌트의 render함수가 재호출 됨

      ->render() 함수 하위의 컴포넌트들의 render() 함수도 재호출 되면서 화면이 다시 그려짐

 

  • render() : 어떤 html을 그릴지 결정하는 함수

 

constructor(props){
    super(props);
    
    this.state = {
      mode:'read',
      welcome:{title:'Welcome', desc:'Hello, React!!'},
          ...
    }
}
 
render(){
    //모드에 따른 화면 출력 변화
    var _title, _desc = null;
    if(this.state.mode === 'welcome'){
      _title = this.state.welcome.title;
      _desc = this.state.welcome.desc;
    } else if(this.state.mode === 'read'){
      _title = this.state.contents[0].title;
      _desc = this.state.contents[0].desc;
    }
    return (
        <Content title={_title} desc={_desc}></Content>
    )
}
cs
  • mode가 'welcome' 일 땐 welcome의 title과 desc를, mode가 'read'일 땐 contents[0]의 title과 desc로 바꿈

※ 복습

 - 동등 비교 : ===

 - JavaScript에선 세미콜론 필수

 - state 설정 시 삽입은 등호(=)가 아닌 콜론(:)

     + 로그 찍기 : console.log('로그 문구')

 

 

'Etc > Frontend' 카테고리의 다른 글

07.13 공부일지 - Javascript 2주차  (0) 2021.07.14
07.13  (0) 2021.07.14
2021.07.11  (0) 2021.07.11
2021.07.07  (0) 2021.07.07
[생활코딩-React] Update  (0) 2021.03.17