반응형
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 | 31 |
Tags
- JavaScript
- express
- vuex
- jsx
- 댓글달기
- Wecode
- webpack
- event
- Vue.js
- 쉬운설명
- Vue
- react
- storybook
- MySQL
- 자바스크립트
- v-html
- nodejs
- mapGetters
- TypeScript
- 리액트
- HOC
- State
- 자료구조
- sass
- ES6
- Vue transition
- input
- App.vue
- CSS
- scss
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