Hello World...

recast.ly 에서 ref 활용 본문

react.js

recast.ly 에서 ref 활용

FaustK 2020. 1. 28. 17:44

리액트에서는 input 의 값(value) 을 가져오고 싶어도, 직접적으로 오리지널 DOM 을 건드리면 안 된다.

document.getElementById('myInput').value (x)

그래서 ref 를 이용해야 한다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import React from 'react';
// import { searchYouTube } from '../searchYouTube';
 
class Search extends React.Component {
  constructor(props) {
    super(props);
 
    this.searchInput = React.createRef();
  }
 
  render() {
    let timer = null;
    let getYouTube = this.props.getYouTube;
 
    // console.log('input: ', this.searchInput);
 
    return (
      <div className="search-bar form-inline">
        <form
          className="search-form"
          onSubmit={e => {
            e.preventDefault();
            if (timer) {
              clearTimeout(timer);
            }
            let q = this.searchInput.current.value;
            // console.log('s: ', this.searchInput.current.value);
            getYouTube(q);
          }}
        >
          <input
            className="form-control"
            name="search"
            ref={this.searchInput}
            type="text"
            onChange={e => {
              // let q = e.target.value;
              // this.setState({ searchQuery: q });
              // setState 사용시 리렌더링 되면서 클리어타임아웃이 제대로 적용이 안 되는 문제?
 
              let query;
              e.target.value ? (query = e.target.value) : '';
              console.log(query);
 
              if (timer) {
                clearTimeout(timer);
              }
 
              timer = setTimeout(() => {
                getYouTube(query); // query 변수를 만들지 않고 e.target.value 를 하면 에러가 난다.
              }, 1000);
            }}
          />
          <button className="btn hidden-sm-down" type="submit">
            <span className="glyphicon glyphicon-search"></span>
          </button>
        </form>
      </div>
    );
  }
}
 
export default Search;
 
cs

'react.js' 카테고리의 다른 글

react proxy 리액트 프록시 cors 문제 해결  (0) 2020.04.15
fetch 사용시 credentilas  (0) 2020.04.08
html input tag type "datetime-local" 날짜와 시간  (0) 2020.02.01
recast.ly 구조  (0) 2020.01.28
React 생명 주기  (0) 2020.01.20
Comments