: https://webruden.tistory.com/224
: https://blog.jungbin.kim/web/2020/01/11/js-vue-global-mixin-refactoriing.html#global-mixin
: https://lannstark.tistory.com/7
const checkIsDuplicatedValue = (data = "") => {
/**
* 1. 우선 string을 배열로 변환한다.
* 2. 첫 번째 인덱스부터 하나씩 순회하면서 중복된 데이터가 있는지 체크
* 3. 체크한 값을 리턴한다.
*/
if (!data.length) return false;
let isDuplicatedValue = false;
const arrayData = data.split("");
// 마지막 인덱스는 이전 인덱스와 모두 비교했으므로 length - 1까지 순회
for (let i = 0; i < arrayData.length - 1; i++) {
// 중복된 데이터가 있는지 체크했으면, 바깥 반복문 종료
if (isDuplicatedValue) break;
for (let j = i + 1; j < arrayData.length; j++) {
// 중복된 데이터가 존재할 경우 반복문 종료
if (arrayData[i] === arrayData[j]) {
isDuplicatedValue = true;
break;
}
}
}
return isDuplicatedValue;
};
Header
- Navbar
- Search
- SearchForm.vue => 비즈니스 로직
Browse
- SearchPage.vue
0. 버튼 기능
0.1 검색 버튼 클릭 기능 => 검색 폼 노출, 노출과 동시에 포커스 이동
0.2 검색 영역 바깥 클릭 기능 => 검색어가 없을 경우, 검색 폼을 제거
0.3 검색어 초기화 기능 => 검색어 초기화 및 이전 페이지로 이동 기능
1. 검색 기능
1.1 검색어를 입력하고, 엔터 키를 입력하면 API를 조회한다.
1.2 SearchPage에 해당하는 경로로 이동한다. => 현재 페이지가 SearchPage라면 페이지를 이동하지 않는다.
1.3 SearchPage에서는 검색 결과를 보여준다. => 스토어를 통해서 검색 결과를 가져온다.
1.4 데이터를 더 불러올 수 있을 경우 스크롤을해서 데이터를 더 불러온다.
2. 검색 결과 표시 기능
2.1 검색 결과가 없을 경우 표시
3. 무한 스크롤 기능( 데이터를 더 불러올 수 있으면, 스크롤을 통해 다음 페이지를 불러온다. )
5. 페이지를 새로고침 했을 경우
5.1 검색어를 받아서 저장해야함.
1. 검색어를 입력하는 동안에는 로딩화면을 보여주고, 검색어 입력이 종료되면 검색 결과를 보여준다.
2. 같은 검색어일때는 엔터 입력 불가능
3. 검색어 저장 기능(최근 검색어 리스트)
검색 버튼 클릭
: 검색 폼 노출 여부 : store에서 관리 ( 다른 페이지에서 사용할 수도 있음 )
route가 변경되었을 경우 검색 폼을 비노출 상태로 변경해야함 ✔
검색어를 입력하고, 엔터를 입력한다.
검색어를 받아서, 검색 API를 조회한다. 그리고 동시에 SearchPage로 이동한다. 이때 쿼리스트링 값이 현재 검색어가 된다.
✨ 새로 고침이 되었을 경우
새로 고침 여부를 어떻게 체크?
검색 함수의 역할
검색 결과를 보여준다.
✨ 새로 고침이 되었을 경우