컴포넌트를 선언하는 방식은 두 가지 입니다.

하나는 함수형 컴포넌트이고, 또 다른 하나는 클래스형 컴포넌트 입니다.

 

 

함수형 컴포넌트

function App() {

  const name = "리엑트";
  return (
    <div>
      {name}
    </div>
  );
}

export default App;

클래스형 컴포넌트

class App extends Component {
  render(){
    const name = "리엑트";
    return (
      <div>
        {name}
      </div>
    );
  }
    
}

export default App;

 

클래스형 컴포넌트에서는 render 함수가 꼭 있어야 하고,

그 안에서 보여 주어야 할 JSX를 반환해야 합니다.

 

두 컴포넌트의 역할은 똑같습니다.

 

다만 차이점은 , 

클래스형 컴포넌트는 state 기능 및 라이프사이클 기능을 사용 할 수 있고

임의 메서드를 정의 할 수 있습니다. 

 

 


예제

 

  • 함수형 컴포넌트
import React, { Component, useState } from 'react';




const  EventPractice = () => {
    
    const [username , setUsername] = useState('');
    const [message , setMessage] = useState('');

    
    const handleChange =(e) =>{
       setUsername(e.target.value);
       setMessage(e.target.value);
    }

    const handleClick = () =>{
        const {username} = this.state;
        //비구조화 할당
        alert(username + ':'+this.state.message);
        setMessage('');
        setUsername('');
    }
    
    
    return (
       
        <div>
            <h1>이벤트 연습</h1>
            <input
                type="text"
                name="username"
                placeholder="사용자 명"
                value= {username}
                onChange={handleChange}
                />
            <input
                type="text"
                name="message"
                placeholder="아무거나 입력하세요"
                value= {message}
                onChange={handleChange}
                />
                <button onClick= {handleClick}>확인</button>
        </div>
    );

};

export default EventPractice;

 

 

 

  • 클래스형 컴포넌트
class  EventPractice extends Component {
    
    state = {
        username : '',
        message: ''
    }

    
    handleChange =(e) =>{
        this.setState({
            [e.target.name]: e.target.value
        });
    }

    handleClick = () =>{
        const {username} = this.state;
        //비구조화 할당
        alert(username + ':'+this.state.message);
        this.setState({
            username : '',
            message:''
        });
    }
    render(){
    const {message} = this.state;
    //비구조화 할당
    return (
        <div>
            <h1>이벤트 연습</h1>
            <input
                type="text"
                name="username"
                placeholder="사용자 명"
                value= {this.state.username}
                onChange={this.handleChange}
                />
            <input
                type="text"
                name="message"
                placeholder="아무거나 입력하세요"
                value= {message}
                onChange={this.handleChange}
                />
                <button onClick= {this.handleClick}>확인</button>
        </div>
    );
}
};

export default EventPractice;

'react' 카테고리의 다른 글

리엑트의 이벤트(Event)  (0) 2020.12.07
함수형 컴포넌트 useState 사용  (0) 2020.12.07
state , useState 사용하기  (0) 2020.12.07
JSX란?  (0) 2020.12.06
react 설치하기  (0) 2020.12.04

+ Recent posts