[TIL]21.05.15

박주홍·2021년 5월 16일
0

Today I Learned

목록 보기
17/104

오늘 배운 것 (생활코딩 React편 참고함)

  • 이벤트에서 state 바꾸는 방법
  • : setState사용, 그전에 useState로 state초기화해주던가, constructor로 props초기화 하면서 state 초기화해주면됌. setState는 state 갱신 함수임.

  • 이벤트에서는 e라는 객체를 갖게되는 데, 거기에 여러 속성 중 preventDefault()라는 함수를
    e.preventDefalut();

    이런식으로 사용하게 해주면 태그의 기본적인 동작방법을 금지시키는 것이다. 예를 들어 <a>태그를 사용할때 <a href="/">{alert(‘Hello World’)}</a> 이런 alert함수가 들어가서 만약 alert함수가 실행되고 끝날때에 href속성에 의해 페이지가 다시 리로딩된다. 그걸 방지하고자 preventDefalut()을 사용한다. (또 다른 목적이 기억나면 다시 블로깅하겠다...)


  • 이벤트에서 state값을 변경할때는 다음과 같이 bind라는 함수를 이벤트 함수 끝에 사용해야한다. 이벤트에서 this를 사용할 경우 bind를 쓰지않으면 this는 아무것도 가르키지 않는다. 그래서
      // 컴포넌트를 사용할때에 props로 함수를 받고, 그 함수를 컴포넌트 내부로직에 있는 
      // onClick과 onChange와 같은 이벤트함수 안에 넣어주면 이벤트가 실행될 때
      // 다음과 같이 props로 받은 함수도 같이 실행되어 이벤트를 만든 것처럼 구현할 수 있다.
     <Subject
    			title={this.state.subject.title},
    			sub={this.state.subject.sub}
    			onChangePage = function(){
    				this.setState(mode: ‘welcome’);
    			}.bind(this);
    >```	
       
    ```js    
    
    import React, { Component } from ‘react’;
    class Subject extends Component {
    	render(){
    		return{
    			<header>
    				<h1><a href=/” onClick={function(e){
    					e.preventDefault();
    					this.props.onChangePage();
    				}.bind(this)}>{this.props.title}</a></h1>
    				{this.props.sub};
    		}
    	}
    }
    export default Subject;

    저 위에서 onChangePage라는 이벤트는 자신이 임의로 만든것이다. 즉 이걸로 이벤트를 직접 만들어서 자신이 원하는 이벤트를 만들 수 있다는 것을 알게 되었다.

    정확히 얘기하면 props.함수 이런 식으로 만들어서 컴포넌트 안의 태그에 이벤트속성을 넣은 곳에 함수를 다시 속성값으로 넣어서 그 함수속성값에 this.props.onChangePage 이렇게 props가 가지고 있는 함수를 넣어줌으로써 원래 있는 onClick이라는 이벤트를 실행했을때 함수가 실행되므로써 이벤트가 실행되는 것처럼 구현한 것이다.


  • 컴포넌트 안에서의 this는 컴포넌트 자체를 가르킨다. (객체 형태로)
  • bind함수를 this 말고 다른 state를 받아온다면 다른 컴포넌트에서 동적으로 사용할 수 있을 것이다.




  • 내일 해야할 것
  • 생활코딩 React 이벤트 이해한 후, 블로깅
  • 생활코딩 React CRUD 강좌 시청하며 다시한번 클론코딩, 그후 React CRUD 관련 블로깅
  • 프로젝트에 react CRUD 적용해보고 블로깅
  • profile
    고통없는 성장은 없다고 할 수 있겠다....

    0개의 댓글