본 게시글은 구름EDU 처음 만난 React 온라인강의를 시청한 후 학습한 정보를 기록하는 목적의 게시글입니다.

생각의 흐름에 따라 작성된 게시글입니다. 가독성이 떨어질 수 있습니다.

처음 만난 React

 

처음 만난 React(리액트) - 구름EDU

굉장히 기초적인 내용 위주로 빠르고 쉽게 만나는 React! 웹 서비스를 위해 알아두어야 할 리액트 필수 개념을 짚어봅시다.

edu.goorm.io

구름 EDU

 

구름EDU - 모두를 위한 맞춤형 IT교육

구름EDU는 모두를 위한 맞춤형 IT교육 플랫폼입니다. 개인/학교/기업 및 기관 별 최적화된 IT교육 솔루션을 경험해보세요. 기초부터 실무 프로그래밍 교육, 전국 초중고/대학교 온라인 강의, 기업/

edu.goorm.io


Event

> a.k.a 사건(특정한)

> DOM에도 React에도 이벤트가 있다!

HTML

<button onclick = "activateLasers()">

    Activate Lasers

</button>

 

React

<button onclick = {activateLasers}>

    Activate Lasers

</button>
//camelCase 형태로 React Event Function Handling

 

Event Handler = Event Listener

>어떤 사건이 발생하면, 사건을 처리하는 역할

1. bind를 사용하는 방법

class Toggle extends React.Component{

    constructor(props){

        super(props);

        this.state = {isToggleOn: true}

 

        this.handleClick = this.handleClick.bind(this);

    }

 

    handleClick(){

        this.setState(state => ({

            isToggleOn : !state.isToggleOn

        }));

    }

 

    render(){

        return(

            <button onClick={this.handleClick}>

                {this.state.isToggleOn ? 'ON' : 'OFF'}

            </button>

        )

    }

}

 

2. Class Field Syntax를 사용하는 방법

class LogginButton extends React.Component{

    handClick = () => {

        console.log('this is:', this);

    }

 

    render(){

        return(

            <button onClick={this.handClick}>

                Click me

            </button>

        )

    }

}

 

cf) Arror function을 사용하는 방법도 있으나 call-back function render된다는 문제점이 있다.

Event Handler Arguments 전달하기

> Arguments?

> 주장; 함수에 주장할 내용; 함수에 전달할 데이터 = parameter

<button onClick={(e) => this.deleteRow(id, e)}>Delete Row</button>

<button onClick={this.deleteRow.bind(this, id)>Delete Row</button>

Bind 사용하기

{Project Name} / src / Chapter06.js

import React from 'react';

import ReactDOM from 'react-dom';

 

class Toggle extends React.Component{

    constructor(props){

        super(props);

        this.state = {isToggleOn: true};

 

        this.handleClick = this.handleClick.bind(this);

    }

 

    handleClick(){

        this.setState(state => ({

            isToggleOn: !state.isToggleOn

        }));

    }

 

    render(){

        return(

            <button onClick={this.handleClick}>

                {this.state.isToggleOn ? 'ON' : 'OFF'}

            </button>

        );

    }

}

 

ReactDOM.render(

    <Toggle />,

    document.getElementById('root')

);

 

export default Toggle;

{Project Name} / src / index.js

import React from 'react';

import ReactDOM from 'react-dom';

import './index.css';

import reportWebVitals from './reportWebVitals';

import Chapter06 from './Chapter06';

//import App from './App';

 

ReactDOM.render(

  <Chapter06 />,

  document.getElementById('root')

);

reportWebVitals();

Arrow function 사용하기

{Project Name} / src / Chapter06.js

import React from 'react';

import ReactDOM from 'react-dom';

 

class Toggle extends React.Component{

    constructor(props){

        super(props);

        this.state = {isToggleOn: true};

 

        //this.handleClick = this.handleClick.bind(this);

    }

 

    handleClick = () =>{

        this.setState(state => ({

            isToggleOn: !state.isToggleOn

        }));

    }

 

    render(){

        return(

            <button onClick={this.handleClick}>

                {this.state.isToggleOn ? 'ON' : 'OFF'}

            </button>

        );

    }

}

 

ReactDOM.render(

    <Toggle />,

    document.getElementById('root')

);

 

export default Toggle;

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기