익명의 개발노트

[Select Tag, Multi input] 이벤트 핸들링 본문

프로그래밍/ReactJS

[Select Tag, Multi input] 이벤트 핸들링

캡틴.JS 2019. 6. 20. 11:00
반응형

Select Tag 사용시 이벤트 핸들링

<select>
  <option value="grapefruit">Grapefruit</option>
  <option value="lime">Lime</option>
  <option selected value="coconut">Coconut</option>
  <option value="mango">Mango</option>
</select>

1. state 초기값 설정

2. select 태그에 대한 이벤트 핸들러 설정

3. 이벤트 핸들러에서 setState값 변경

class FlavorForm extends React.Component {
  constructor(props) {
    super(props);
    this.state = {value: 'coconut'};   //1.초기값 설정

    this.handleChange = this.handleChange.bind(this);
    this.handleSubmit = this.handleSubmit.bind(this);
  }

  handleChange(event) { //3.setState값 변경
    this.setState({value: event.target.value});
  }

  handleSubmit(event) {
    alert('Your favorite flavor is: ' + this.state.value);
    event.preventDefault();
  }

  render() {
    return (
      <form onSubmit={this.handleSubmit}>
        <label>
          Pick your favorite flavor:
          <select value={this.state.value} onChange={this.handleChange}> //2.부모테그 이벤트 핸들러 설정
            <option value="grapefruit">Grapefruit</option>
            <option value="lime">Lime</option>
            <option value="coconut">Coconut</option>
            <option value="mango">Mango</option>
          </select>
        </label>
        <input type="submit" value="Submit" />
      </form>
    );
  }
}

 

Input 여러개있을때 이벤트 핸들링 설정

1. input 태그에 각각의 이름설정, 이벤트 부여

2. 이벤트 핸들링, 인풋 태그 갯수에 상관없이 이벤트 핸들러는 한개만 생성 후 내부에서 이름값으로 컨트롤

class Reservation extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      isGoing: true,
      numberOfGuests: 2
    };

    this.handleInputChange = this.handleInputChange.bind(this);
  }

  handleInputChange(event) {
    const target = event.target;
    const value = target.type === 'checkbox' ? target.checked : target.value;
    const name = target.name;  //이름값으로 컨트롤

    this.setState({
      [name]: value
    });
  }

  render() {
    return (
      <form>
        <label>
          Is going:
          <input
            name="isGoing"
            type="checkbox"
            checked={this.state.isGoing}
            onChange={this.handleInputChange} />
        </label>
        <br />
        <label>
          Number of guests:
          <input
            name="numberOfGuests"
            type="number"
            value={this.state.numberOfGuests}
            onChange={this.handleInputChange} />
        </label>
      </form>
    );
  }
}
반응형

'프로그래밍 > ReactJS' 카테고리의 다른 글

웹팩 자동빌드하기  (0) 2019.05.09
웹팩(webPack) + 바벨 설정하기.  (2) 2019.05.08
리액트 Hook  (1) 2019.05.08
Redux  (0) 2019.04.25
리액트 CSS관련 라이브러리  (0) 2019.04.24
Comments