State

작성일: 2018-02-09

class Search extends Component {
  constructor(props) {
    super(props);

    this.state = {
      searchTerm: 'some statement..'
    };
  }

  onChangeHander(event) {
    this.setState({
      searchTerm: event.target.value
    });
  }

  render() {
    return (
      <div>
        <input
          onChange="this.onChangeHander"
          value={this.state.searchTerm}
          type="text"
          placeholder="Search"
        />
      </div>
    );
  }
}
  • render, return 은 반드시 있어야 한다.

  • eslint 의 react/prefer-stateless-function 오류를 피하려면 contructor(옵션), state 를 포함시켜야 한다.

  • this.onChangeHander 의 this 와 클래스 인스턴스의 this 는 같지 않다. 따라서 bind 메소드를 이용하여 핸들러에게 this(클래스 인스턴스) 를 알려주어야 한다.

  • 하지만, bind 는 비용이 꽤 높은 함수이며, render 는 자주 호출되기 때문에 생성자에서 한 번 작성하는 것이 비용 효율적이다.

.babelrc

.eslintrc.json

  • 위와 같이 했다면 아래와 같이 바꿀 수 있다.

참고

Frontend Master

Last updated

Was this helpful?