TIL | props / state

9461 단어 TILTIL

state

컴포넌트 내부에 들어있는 컴포넌트의 상태값

화면에 보여줄 컴포넌트의 UI정보를 지니고 있는 객체
유저 상호작용으로 변화하는 것들이 state 객체 안에 저장된다.

class Parent extends React.Component{
  constructor(){
    super();
    this.state ={  //this 는 현재 컴포넌트를 말한다
      color:"red",
    }

문법성을 위해 구조 분해 할당을 사용할 수 있다.

state event

함수 생성 후 this.setState({}) == 이 class의 스테이트 상태를 변경하겠다.

props

컴포넌트의 속성값으로 부모 컴포넌트로부터 전달 받은 데이터를 가지고 있는 객체다.
state의 상태값과 event handler를 inherit 할 수 있다.
자식 컴포넌트가 부모로부터 정보를 전달 받을 수 있다.

props 객체 & event

// Parent.js  부모 컴포넌트

import React from 'react';
import Child from '../pages/Children/Children';

class Parent extends React.Component {
  constructor() {
    super();
    this.state = {
      color: 'red'
    };
  }

  handleColor = () => {
    this.setState({
      color: 'blue'
    })
  }

  render() {
    return (
      <div>
        <h1>Parent Component</h1>
		//부모 컴포넌트 안에서 Child 컴포넌트를 import 후 h1 태그 아래에 위치
        //부모 state 데이터를 props를 활용해 컴포넌트에 넘긴다.
        <Child titleColor={this.state.color} changeColor={this.handleColor}/>
      </div>
    );
  }
}

export default State;
// Child.js 자식 컴포넌트

import React from 'react';

class Child extends React.Component {
  render() {
		// console.log(this.props);

    return (
      <div>
        //titleColor 값으로 this.state.color(부모 컴포넌트 state 객체 중 color 값을 전달
     	//button 요소에서 onClick 이벤트 발생 > this.props.changeColor 실행 > 
        //props 객체의 change 컬러(부모 컴포넌트로부터 전달받은 handleColor) 실행 >
        //handleColor 함수를 실행하면 setState 함수 호출 > state color 값을 'blue'로 변경
        //render 함수 호출
        //자식 컴포넌트에 변경된 state 데이터 전달
        <h1 style={{color : this.props.titleColor}}>Child Component</h1>
				<button onClick={this.props.changeColor}>Click</button>
      </div>
    );
  }
}

export default State;

좋은 웹페이지 즐겨찾기