react 이벤트

2020. 5. 17. 01:27· dev/react
목차
  1. - mode에 따라서 title(HTML영역)과 desc(HTML is for information 영역)이 틀려지는 예제
  2. - react에서 이벤트 사용
  3. - bind() 함수

참고사이트 

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 사용

2020/05/15 - [react/기초] - react state소개 및 사용

- mode에 따라서 title(HTML영역)과 desc(HTML is for information 영역)이 틀려지는 예제

react 에서는 props값이나 state값이 바뀌면 해당되는 component의 render()함수가 다시 호출되게 되어있다.

즉 props나 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 = {
      mode: 'welcome', //추가
      welcome: {title:'welcome', desc:'welcome react!'}, //추가
      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(){
	//추가
    var _title, _desc = null;
    if (this.state.mode === 'welcome'){
      _title = this.state.welcome.title
      _desc = this.state.welcome.desc
    } else if (this.state.mode === 'read'){
      _title = this.state.contents[0].title
      _desc = this.state.contents[0].desc
    }

    return (
      <div className="App">
        <Subject 
          title={this.state.subject.title} 
          sub={this.state.subject.sub}>
        </Subject>
        <Nav data={this.state.contents}></Nav>
        <Article title={_title} sub={_desc}></Article> 
      </div>
    );
  }
}

export default App;

위처럼 state에 mode, welcome 을 추가 해주고, render()함수에 mode값에 따라서 분기처리 해준 후 

<Article 에 _title, _desc 코드로 바꿔준다.

개발자도구(f12)에서 app영역에 state mode값을 수동으로 바꿔주면서 테스트 할 수 있다.

mode가 welcome일때 
mode가 read일때

 

- react에서 이벤트 사용

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 = {
      mode: 'welcome',
      welcome: {title:'welcome', desc:'welcome react!'},
      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(){

    var _title, _desc = null;
    if (this.state.mode === 'welcome'){
      _title = this.state.welcome.title
      _desc = this.state.welcome.desc
    } else if (this.state.mode === 'read'){
      _title = this.state.contents[0].title
      _desc = this.state.contents[0].desc
    }

    return (
      <div className="App">
        {/* <Subject 
          title={this.state.subject.title} 
          sub={this.state.subject.sub}>
        </Subject> */}

        {/* subject를 component로 분리하지 않고 이벤트를 테스트하기 위해 subject.js에서 가져옴  */}
        <header>
            <h1><a href="/" onClick={function(e){
              console.log(e);
              e.preventDefault();
              alert('hi');
              // debugger 
            }}>{this.state.subject.title}</a></h1>
            {this.state.subject.sub}
        </header>
        <Nav data={this.state.contents}></Nav>
        <Article title={_title} sub={_desc}></Article>
      </div>
    );
  }
}

export default App;

subject.js에서 <header></header> 부분을 가져와서 클릭시 alert('hi') 창 생성됨 

- javascript 와 다르게 onClick(C가 대문자)로 사용된다.

- e.preventDefault(); 이벤트가 발생한 tag에 기본적인 동작을 막는다.

- debugger은 크롬 개발자도구에서 debugger을 만나면 실행을 멈춘 상태이다.

 

- bind() 함수

bind()함수 테스트

bindTest() 함수에 bind키워드로 obj객체를 bind시킬 수 있다.

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

react props, state 개념정리  (0) 2020.05.21
react 컴포넌트이벤트 만들기  (0) 2020.05.19
react state소개 및 사용  (0) 2020.05.15
react 속성(props), react Developer Tools 사용  (0) 2020.05.13
react 컴포넌트(component) 개념  (0) 2020.05.11
  1. - mode에 따라서 title(HTML영역)과 desc(HTML is for information 영역)이 틀려지는 예제
  2. - react에서 이벤트 사용
  3. - bind() 함수
'dev/react' 카테고리의 다른 글
  • react props, state 개념정리
  • react 컴포넌트이벤트 만들기
  • react state소개 및 사용
  • react 속성(props), react Developer Tools 사용
아디봉
아디봉
내인생의 카드는 몇장일까?
아디봉
내이른
아디봉
전체
오늘
어제
  • 분류 전체보기 (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)

블로그 메뉴

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

공지사항

인기 글

태그

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

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
아디봉
react 이벤트
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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