반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- nodejs
- scss
- event
- State
- JavaScript
- 쉬운설명
- vuex
- Wecode
- webpack
- storybook
- Vue
- v-html
- react
- HOC
- 댓글달기
- ES6
- TypeScript
- mapGetters
- 자료구조
- jsx
- 자바스크립트
- Vue transition
- CSS
- express
- Vue.js
- MySQL
- sass
- input
- 리액트
- App.vue
Archives
- Today
- Total
익명의 개발노트
[vue.js] debounce를 이용한 검색기능 구현 본문
반응형
위 그림과 같이 보는대로 검색에 따른 내용물이 보이는 기능을 구현하려할때, 자바스크립트에서 디바운싱 기능을 이용하면 수월하게 작업할 수 있다.
debounce 란?
특정시간이 지난 시점에서 이벤트가 하나만 발생하도록 제어하는 기술
연속적으로 호출되는 함수들 중 마지막 함수 또는 제일 처음만 호출하도록 하는 것
검색창 input에 search라는 data를 바인딩 시킨 후
<input class="stage-search" type="text"
v-model="search"
placeholder="스테이지 검색"
@input="handleSearchInput"
@keydown.tab="KeydownTab"
/>
input 이벤트를 작성한다.
handleSearchInput(e) {
this.search = e.target.value;
if(this.search.length !== 0){
clearTimeout(this.debounce);
this.debounce = setTimeout(() => {
const filteredList = this.stageInfoList.filter(item => item.title.includes(this.search));
this.searchList = filteredList;
}, 500);
}else{
clearTimeout(this.debounce);
this.debounce = setTimeout(() => {
this.searchList = [];
}, 500);
}
},
위에 필터링 되는 함수를 searchList라는 data값에 넣어서 html에서 랜더링 시켜주면 끝.
반응형
'코딩일기 > TIL' 카테고리의 다른 글
[node] 웹소켓 특징 (0) | 2020.10.21 |
---|---|
[vue.js] production mode에서 console.log 제거하기 (0) | 2020.07.22 |
[vue.js] 클릭시 focus 이벤트 (0) | 2020.07.13 |
[vue.js] audio file upload (0) | 2020.07.02 |
[vue.js] 이미지 박스???? 썸네일 박스?? 구현하기 (0) | 2020.06.10 |
Comments