react state소개 및 사용

2020. 5. 15. 01:10· dev/react
목차
  1. - state소개
  2. - state 사용
  3. - state 더 잘사용해보기

참고사이트 

https://www.youtube.com/playlist?list=PLuHgQVnccGMCRv6f8H9K5Xwsdyg4sFSdi

 

React - YouTube

 

www.youtube.com

2020/05/04 - [react/기초] - react 설치, 개발환경구축

2020/05/05 - [react/기초] - react 구조

2020/05/11 - [react/기초] - react 컴포넌트(component) 개념

2020/05/13 - [react/기초] - react 속성(props), react Developer Tools 사용

- state소개

state를 이해하기 위해선 props와 함께 개념을 이해해야 한다. 

휴대폰에 버튼, 화면 등(user interface)이 props라면 내부적인 구현을 위해서 다양한 상태, 매커니즘등을 state라고 가정할 수 있겠다.

props는 사용자가 component를 사용하는 입장에서 중요하고, state는 props의 값에 따라서 내부구현에 필요한 데이터들이 state다.

컴포넌트가 좋은부품이 되기 위해서는 그 컴포넌트를 사용하는 외부에 props와 그 props에 따라서 구현되어지는 내부에 state가 철저히 분리되어 있어야 한다.

즉 사용하는 쪽과 구현하는 쪽이 철저히 격리되어서 양쪽에 편의성을 각자 도모하는것이 핵심이다.

 

- state 사용

import React, { Component } from 'react';
import Subject from "./components/Subject";
import Nav from "./components/Nav";
import Article from "./components/Article";
import './App.css';

class App extends Component {
  //state 초기화
  //컴포넌트가 실행될때 constructor이 있다면 제일먼저 실행되어서 초기화를 담당한다.
  constructor(props){
    super(props);
    //subject state값을 만듬
    this.state = {
      subject:{title:'WEB', sub:'World Wide Web!'}
    }
  }

  render(){
    return (
      <div className="App">
        <Subject 
          title={this.state.subject.title} 
          sub={this.state.subject.sub}>
        </Subject>
        <Nav></Nav>
        <Article title="Html" sub="Html is HyperText Markup Language."></Article>
      </div>
    );
  }
}

export default App;

컴포넌트가 실행될때 constructor을 만나면 제일먼저 실행되어서 초기화를 담당한다. 

state 생성은 this.state = {subject: {title:'WEB', sub:'World Wide Web!'}

state 사용은 <Subject title={this.state.subject.title} sub={this.state.subject.sub}></Subject>

 

- state 더 잘사용해보기

import React, { Component } from 'react';
import Subject from "./components/Subject";
import Nav from "./components/Nav";
import Article from "./components/Article";
import './App.css';

class App extends Component {
  //state 초기화
  //컴포넌트가 실행될때 constructor이 있다면 제일먼저 실행되어서 초기화를 담당한다.
  constructor(props){
    super(props);
    //subject state값을 만듬
    this.state = {
      subject:{title:'WEB', sub:'World Wide Web!'},
      contents:[
        {id:1, title:'HTML', desc: 'HTML is for information'},
        {id:2, title:'CSS', desc: 'CSS is for design'},
        {id:3, title:'JavaScript', desc: 'JavaScript is for interactive'},
      ]
    }
  }

  render(){
    return (
      <div className="App">
        <Subject 
          title={this.state.subject.title} 
          sub={this.state.subject.sub}>
        </Subject>
        <Nav data={this.state.contents}></Nav>
        <Article title="Html" sub="Html is HyperText Markup Language."></Article>
      </div>
    );
  }
}

export default App;

 

src>App.js

 

nav영역의 목록데이터를 state로 사용하려면 constructor의 contents: [...] 항목추가

<Nav data={this.state.contents}></Nav>로 위의 state와 연결

import React, { Component } from 'react';

class Nav extends Component {
  render(){
    var lists = [];
    var data = this.props.data; //App.js state contents 값
    var i = 0;
    //while 반복문
    while(i < data.length){
      lists.push(<li key={data[i].id}><a href={"/content/"+data[i].id}>{data[i].title}</a></li>);
      i = i + 1;
    }
    return(
      <nav>
          <ul>
            {lists}
          </ul>
      </nav>
    );
  }
}

export default Nav;

src>component>Nav.js

'dev > react' 카테고리의 다른 글

react 컴포넌트이벤트 만들기  (0) 2020.05.19
react 이벤트  (0) 2020.05.17
react 속성(props), react Developer Tools 사용  (0) 2020.05.13
react 컴포넌트(component) 개념  (0) 2020.05.11
react 구조  (0) 2020.05.05
  1. - state소개
  2. - state 사용
  3. - state 더 잘사용해보기
'dev/react' 카테고리의 다른 글
  • react 컴포넌트이벤트 만들기
  • react 이벤트
  • react 속성(props), react Developer Tools 사용
  • react 컴포넌트(component) 개념
아디봉
아디봉
내인생의 카드는 몇장일까?
아디봉
내이른
아디봉
전체
오늘
어제
  • 분류 전체보기 (81)
    • 경제적자유 (11)
      • 경제노트 (4)
      • 부동산노트 (3)
      • 책리뷰 (1)
      • 유튜브 (2)
    • dev (50)
      • 사이드프로젝트 (0)
      • JavaScript (7)
      • 스프링 (5)
      • 자바 (11)
      • docker (7)
      • tdd (0)
      • DB (2)
      • mongoDB (1)
      • python (1)
      • react (9)
      • 인증.권한 (1)
      • 기타 (5)
      • HTTP (0)
      • JSP (1)
    • life (9)
      • 백패킹 (3)
      • 자기개발 (6)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • 파코기
  • Java8
  • Eclipse
  • 자바
  • react 이벤트
  • optional
  • 파란코끼리들의기적
  • 자바스크립트
  • 백패킹
  • javascript
  • javascript jsTree
  • jstree
  • 정다르크
  • log4j
  • Oracle
  • 객체
  • Maven
  • function
  • web
  • 스프링데이터jpa
  • Cookie
  • Java
  • React
  • 옵셔널
  • 롬복
  • Lombok
  • Object
  • docker
  • logback
  • 쿠키

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
아디봉
react state소개 및 사용
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.