RedPlus 개인 블로그

시삽: 레드플러스 님 
게시판 이동:
 제목 : Debounce 기능이 적용된 React.js SearchBox 입력 컴포넌트
글번호: 336
작성자: Administrator ( 레드플러스 / redplus@live.com )
작성일: 2020/12/12 오후 11:36:44
조회수: 2898
파일: Reactjs_SearchBoxComponent.jpg (65 KB) / 전송수: 1347
Reactjs_SearchBoxComponent.jpg

Blazor Server에서 사용하던

SearchBox 컴포넌트를 React.js 컴포넌트로 만들어 보았습니다. 

 

SearchBox.jsx

import React, { Component } from 'react';

export class SearchBox extends Component {
    constructor(props) {
        super(props);

        this.state = {
            searchQuery: ""
        };

        this.debounce = this.debounce.bind(this); 
        this.searchQueryChanged = this.searchQueryChanged.bind(this); 
        this.sendSearchQuery = this.sendSearchQuery.bind(this); 
    }
    sendSearchQuery() {
        this.props.searchQueryChanged(this.state.searchQuery); // SearchQuery를 부모 컴포넌트로 전송
    }
    searchQueryChanged(e) {
        const qry = e.target.value;
        this.setState({ searchQuery: qry });
        console.log(qry);
        this.searchHandler();
    }
    searchHandler = this.debounce(() => {
        console.log("Child", this.state.searchQuery);
        this.sendSearchQuery();
    }, 3000);
    debounce(fn, interval) {
        let debounceTimer
        return _ => {
            clearTimeout(debounceTimer)
            debounceTimer = setTimeout(_ => {
                debounceTimer = null
                fn.apply(this, arguments)
            }, interval)
        };
    }
    render() {
        return (
            <>
                <div className="input-group mb-3">
                    <input className="form-control form-control-sm form-control-borderless" type="search" placeholder="Search topics or keywords" aria-describedby="btnSearch"
                        value={this.state.searchQuery}
                        onChange={this.searchQueryChanged}
                    />
                    <div className="input-group-append">
                        <button className="btn btn-sm btn-success" type="button" onClick={this.sendSearchQuery}>Search</button>
                    </div>
                </div>
            </>
        );
    }
}

 

SearchComponent.jsx

import React, { Component } from 'react';
import { SearchBox } from '../Shared/SearchBox';

export class SearchComponent extends Component {
    constructor(props) {
        super(props);
        this.state = {
            searchQuery: ''
        };
        this.searchQueryChanged = this.searchQueryChanged.bind(this); 
    }
    searchQueryChanged(searchQuery) {
        console.log("Parent", searchQuery);
        this.setState({ searchQuery: searchQuery });
    }
    render() {
        return (
            <>
                <h1>SearchBox Component Test</h1>
                <SearchBox
                    searchQueryChanged={(searchQuery) => this.searchQueryChanged(searchQuery)}>
                </SearchBox>
            </>
        );
    }
}

 

참고로, 검색 박스에 대한 사용은 

React.js 게시판 프로젝트 강좌에서 사용됩니다.

 

끝.

 

 

 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트


관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 Failed to execute goal org.apache.maven.plugins... 2020-12-18_13-41-47.jpg(29 KB) Administrator 2020-12-18 2957
현재글 Debounce 기능이 적용된 React.js SearchBox 입력 컴포넌트 Reactjs_SearchBoxComponent.jpg(65 KB) Administrator 2020-12-12 2898
다음글 ASP.NET Core MVC 처음 시작할 때 특정 컨트롤러로 이동하기 - Administrator 2020-08-30 3196
관련 페이지 리스트
numtitlenamedateview
388 C 언어에서 값 전달과 참조 전달(Call By Value and Call By Re... Administrator 2023-03-09 1680
387 병합 알고리즘 순서도 2022-10-22 2454
386 C 언어 강의: scanf를 엔터키를 기준으로 여러 행으로 값을 입력 받기 Administrator 2022-01-09 3577
385 C 언어: scanf 사용해서 표준 입력인 콘솔로부터 나이를 정수로 입력 받아 출력 Administrator 2022-01-07 2579
384 Java 코드 샘플 - Function 인터페이스로 람다 식 만들기 Administrator 2022-01-04 2491
383 C# 코드 샘플 - 널 조건부 연산자 사용하기 Administrator 2022-01-02 2529
382 C# 코드 샘플 - 널 병합 연산자와 default 키워드 Administrator 2022-01-02 2460
381 C# 코드 샘플 - 널 병합 연산자로 문자열 변수의 NULL 값 확인하기 Administrator 2022-01-02 2373
380 C# 강의 - 14세 미만 체크 메서드 구현 Administrator 2022-01-01 2409
379 C 언어 천 단위 콤마 찍기 thousands_separator.c Administrator 2021-12-30 3247
378 for 문 순서도 - for 문(for loop) 순서도(flowchart) Administrator 2021-12-28 5211
377 C 언어 코드 샘플 - 전처리기 - 조건부 컴파일 Administrator 2021-12-27 2412
376 C 언어 코드 샘플 - 전처리기 - 매크로 함수 Administrator 2021-12-27 2413
375 http-server 설치하기 - 로컬 루프백 주소로 웹페이지 실행 2021-12-27 2428
374 C 언어 코드 샘플 - N명의 학생의 점수를 입력받아 1차원 배열에 저장 후 총점 구... Administrator 2021-12-27 2441
373 Java 코드 샘플 - 두 수의 합을 구하는 함수 Administrator 2021-12-26 2355
372 C 언어 코드 샘플 - 두 수의 합을 구하는 함수 Administrator 2021-12-26 2382
371 C# 교과서 강좌 - LINQ - Select 확장 메서드에 익명 형식 사용하기 Administrator 2021-12-26 2453
370 C# 교과서 강의 - LINQ - Select 확장 메서드를 사용하여 새로운 형태로 ... Administrator 2021-12-26 2399
369 C 언어 코드 샘플 - static-shared - 정적(공유) 변수 사용하기 Administrator 2021-12-26 2419
 
 
 
손님 사용자 Anonymous (손님)
로그인 Home