program_language 및 궁금한것/ReactJS

[React] 버튼 클릭 시마다 1 증가 기능

jinsiri 2019. 10. 13. 13:01
<div id="root"></div> 태그 선언후 아래 코드를 작성해 준다.
class Counter extends React.Component{
  
  constructor(props){
    super(props);
    this.state={
      value:0
    };
    this.handleClick=this.handleClick.bind(this);
  }
  
  handleClick(){
    this.setState({
      value:this.state.value+1
    });
  }
  render(){
    return(
      <div>
        <h2>{this.state.value}</h2>
        <button onClick={this.handleClick}>Press Me</button>
      </div>
    )
  }
}

class App extends React.Component {
  render() {
    return (
    <Counter/>
    );
  }
};

ReactDOM.render(
  <App></App>,
  document.getElementById("root")
);

 

* 클릭할때마다 증가값을 주는 메소드

두번째 방법으로 코드를 짜는것은 지양해야 한다. 

개발자 모드에서 나는 경고만 봐도 어마무시하게 길다... 

o 권장하는 방법
handleClick(){ 
   this.setState({ 
   value:this.state.value+1 
  }); 
}
  
x 전혀 권장하지 않는 방법
handleClick(){ 
  this.state.value=this.state.value+1;
  this.forceUpdate();
}

 

* 버튼 클릭할때 onClik을 거는 부분에 혹시라도 메소드 형식으로 호출하면 안된다.

this.handleClick() 으로 호출을 하게 된다면 랜더링을 할때마다 해당 함수를 실행하기 때문에 엄~~~청 많은 숫자가 나온다. 

o 정상적인 사용
<button onClick={this.handleClick}>Press Me</button>

x 비정상적인 사용
<button onClick={this.handleClick()}>Press Me</button>

반응형