react

React - State (상태 객체) ★

919

목차

  1. state 객체 정의
  2. state 객체 생성
  3. state 객체 사용
  4. state 객체 변경

 

state 객체 정의

 

컴포넌트에 속하는 속성값을 저장하는 곳

 


 

1.

React 컴포넌트들은 내장된 state 객체 갖음.

 

2. 

state 객체가 변하면, 컴포넌트가 다시 렌더링 됨. 

 

 

state 객체 생성

 

state 객체는 constructor() 함수 안에서 초기화 됨.

즉, 초기 속성값이 state 객체 안에 담김.

 


[예제1] 속성값이 1개인 경우

 

import React from 'react';

import ReactDOM from 'react-dom';


class Hz extends React.Component {

  constructor(props) {

    super(props);

    this.state = {name: "홈짱닷컴"};

  }

  render() {

    return (

      <div>

        <h1>{this.state.name}</h1>

      </div>

    );

  }

}


ReactDOM.render(<Hz />, document.getElementById('root'));

 


[예제2] 속성값이 다수인 경우

 

import React from 'react';

import ReactDOM from 'react-dom';


class Hz extends React.Component {

  constructor(props) {

    super(props);

    this.state = {

      name: "홈짱닷컴",

      host: "Homzzang.com",

      memo: "홈페이지 제작관리",

      open: 2012

    };

  }

  render() {

    return (

      <div>

        <h1>{this.state.name}</h1>

        <p>

          {this.state.host}<br/>

          {this.state.memo}<br/>

          {this.state.open}

        </p>

      </div>

    );

  }

}


ReactDOM.render(<Hz />, document.getElementById('root'));

 

 

state 객체 사용

 

this.state.property_name

위 구문을 사용해 컴포넌트의 어디서든 state 객체 참조 가능.

 


[예제]

 

import React from 'react';

import ReactDOM from 'react-dom';


class Hz extends React.Component {

  constructor(props) {

    super(props);

    this.state = {

      name: "홈짱닷컴",

      host: "Homzzang.com",

      memo : "홈페이지 제작관리",

      open: 2012

    };

  }

  render() {

    return (

      <div>

        <h1>{this.state.name}</h1>

        <p>

          {this.state.host}<br />

          {this.state.memo}<br />

          {this.state.open}

        </p>

      </div>

    );

  }

}


ReactDOM.render(<Hz />, document.getElementById('root'));

 

 

state 객체 변경

 

this.setState() 메서드 사용해, state 객체의 값을 변경 가능.

state 값이 변경되면, 변경 값 기준으로 페이지 다시 렌더링 됨.

 

주의:

반드시 setState() 메서드로 state 객체를 변경해야 함. 

그래야, React가 컴포넌트 업데이트 되었음을 인식해서,

render() 메서드 (및 기타 모든 수명주기 메서드)를 호출해.

변경값 기준으로 페이지가 자동으로 다시 렌더링 됨.

 


[예제]

 

import React from 'react';

import ReactDOM from 'react-dom';


class Hz extends React.Component {

  constructor(props) {

    super(props);

    this.state = {

      name: "홈짱닷컴",

      host: "Homzzang.com",

      memo: "홈페이지 제작관리",

      open: 2012

    };

  }

  changeMemo = () => {

    this.setState({memo: "그누보드/영카트 강의"});

  }

  render() {

    return (

      <div>

        <h1>{this.state.name}</h1>

        <p>

          {this.state.host}<br/>

          {this.state.memo}<br/>

          {this.state.open}

        </p>

        <button

          type="button"

          onClick={this.changeMemo}

        >Change Memo</button>

      </div>

    );

  }

}


ReactDOM.render(<Hz />, document.getElementById('root'));

 



제목
React - Home (입문) + 사용 환경 구축
React - Intro (소개) - 작동 방식 + 역사
React - Start (시작) - 사용환경 설정.
React - ES6 (최신 JS의 3가지 주요 이슈)
React - Render HTML (웹페이지 렌더링)
React - JSX (= JavaScript XML)
React - Components (컴포넌트) ★
React - Props (인수 = 독립변수) ★
React - State (상태 객체) ★
React - Lifecycle (컴포넌트 수명 주기)
React - Events (이벤트) ★★
React - Forms (입력폼) ★★★
React - CSS (스타일링)
React - Sass (SCSS)
목록
  • 채팅방
  • 필독
1. 채팅창 헤드에서 접속자 확인 2. 닉네임 클릭해 1:1 채팅 가능 3. 닉네임 클릭해 귓속말 가능 4. 닉네임 클릭해 호출하기 가능 5. 우하단 클릭해 환경 설정 가능 6. 의뢰글 작성 후 의뢰 상담 가능 7. 질문글 작성 후 질문 상담 가능 8. 채팅방에 개인정보 입력 금지 9. 채팅방에 광고 욕설 비방 금지
 홈  PC버전 로그인 일본어
웹디자인언어
서버관리언어
고급코딩언어
그누보드
제작의뢰
Q&A
커뮤니티 3
웹유틸
회원센터
홈짱 PC버전 로그인