v-if

숫자클릭시 숫자가 5가 될때 문자를 나타내도록 조건문을 활용하여 나타내기

vue.js 에서는 v-if 라는 html 속성을 제공해서 어떤 특정한 데이터를 기준으로 조건을 달아줄 수가 있다. 

이러한속성들을 디렉티브 라고 부른다.

 

v-for

 

fruits 라는 반복되는 배열데이터를 생성후 

vue.js 에서 제공하는 디렉티브인 v-for 를 데이터를 명시하여 fruits 의 아이템의 갯수만큼 반복되면서 

fruit 라는 변수에 할당하여 li 태그 내부에서 활용할 수 가있다.

데이터를 반복할때는 각각의 데이터가 고유하는지를 증명하기 위해서 key 라는 속성을 콜론 기호와 함께 제공을 해주어야한다.

 

'Vue.js 3' 카테고리의 다른 글

영화 검색 사이트 예제 -5  (0) 2022.10.06
영화 검색 사이트 예제 -4  (0) 2022.09.04
영화 검색 사이트 예제 -3  (0) 2022.09.03
영화 검색 사이트 예제 -2  (0) 2022.08.31
영화 검색 사이트 예제 -1  (0) 2022.08.31

영화 목록에서 ID 중복 제거 

고유속성을 movie.title 에서 movie.imdbID 로 변경후 

개발서버 실행후 확인해보자!

결과적으로 같은 영화의 데이터가 반환되고 있다. 해당하는 내용을 중복되지 않도록 수정해주도록 하자!

https://lodash.com/

 

Lodash

_.defaults({ 'a': 1 }, { 'a': 3, 'b': 2 });_.partition([1, 2, 3, 4], n => n % 2);DownloadLodash is released under the MIT license & supports modern environments. Review the build differences & pick one that’s right for you.InstallationIn

lodash.com

특정한 배열데이터를 고유화 시켜줄수있는 api 이다

_.uiqBy 첫번째 인수로는 배열데이터를 두번째인수로는 해당하는 속성을 이름을 명시해준다.

npm i lodash

 

'Vue.js 3' 카테고리의 다른 글

조건문 반복문  (0) 2022.10.20
영화 검색 사이트 예제 -4  (0) 2022.09.04
영화 검색 사이트 예제 -3  (0) 2022.09.03
영화 검색 사이트 예제 -2  (0) 2022.08.31
영화 검색 사이트 예제 -1  (0) 2022.08.31

기존에 Search 컴포넌트의 apply 메소드 안에 내용을 지우고 Store movie.js 파일로 이동을 해주자

  const OMDB_KEY = '7035c60c'
          const res = await axios.get(`https://www.omdbapi.com/?apikey=${OMDB_KEY}&s=${this.title}&type=${this.type}&y=${this.year}&page=1`)
          console.log(res);

작성후 실제로 search 컴포넌트에서 apply 함수가 실제로 작동이 되야하기때문에 search 컴포넌트에서 

movie.js(모듈) 안에 actions 가 가지고있는 searchMoives 로 접근을해서 객체 구조분해로 작성해준다.

실제로 state 부분의 movies 빈배열을 수정 해줘야 하기때문에 

search 컴포넌트에서 apply 함수가 실행이 되면 movie.js 모듈안에 actions 가 가지고있는 searchMoives 함수가 실행이 될것이다. 그리고 그것을 payload 라는 인자 값으로 받아서 객체 구조분해로 title, type,numer, year 로 할당됨

그리고 실제로 omdbapi 에 요청!하고 반환 받은 값을 res 변수에 담아서  Search 에 다시 담아주면 

context.commit 함수를 통해 mutations 의 upadateState 함수에다가  배열 데이터를 전달!

forEach 문을 이용하여 state 값을 수정해준다!

 

첫번째 에러는 index.js 안에서 vuex 를 import 해오는 과정중 에러가 난것이기때문에 

오타 수정을 통하여 해결

두번째 에러도 마찬가지로 import 해오는 과정중 경로를 찾을수 없으므로 오타부분을 수정해 주었다.

 

에러 해결후 개발서버 오픈

title 이 제대로 출력되는걸 확인!

그다음으로 아까 다루지 않았던 totalResults 를 확인해보겠다.

'Vue.js 3' 카테고리의 다른 글

조건문 반복문  (0) 2022.10.20
영화 검색 사이트 예제 -5  (0) 2022.10.06
영화 검색 사이트 예제 -3  (0) 2022.09.03
영화 검색 사이트 예제 -2  (0) 2022.08.31
영화 검색 사이트 예제 -1  (0) 2022.08.31

3part 에서는 이번에 실제로 페이지에서 영화를 검색 할수 있는 버튼을 만들어 볼것이다.

우선 container 안에 selects 와 별개로 버튼 태그를 추가하고 클릭했을시 버튼태그의 메소드를 실행 하는 함수를 

추가해 준다!

이제 실제로 영화의정보를 요청할 수 있는 코드를 추가해보자!

먼저 패키지를 추가 설치!

http 를 요청할 수 있게  도와주는 패키지이다.

npm i axios

설치 완료후

import axios from 'axios'

불러온후 apply() 메소드안에서 실행시켜주도 록하자!

omdbapi 에서 요청할 url 주소를 입력!

변수 부분에다가는 omdb 페이지에서 발급받은 키를 입력해주면됨!

일단 요청이 되는지 확인하기앞서

요청한 내용은 자바스크립트 내부에서 비동기로 작동이 되야하기 때문에 apply 함수앞에 async 키워드를 붙여주고

axios.get 부분에 await 키워드를 붙여준다 그리고 그 요청해서 반환한 결과를 res 에 담아서 

콘솔에 출력해준다!

검색창에 frozen 이라는 키워드를 입력했고 콘솔창에 결과를 보니 하나의 객체데이터 가 출력이된다!

하나의 객체 데이터를 열어보면

이미지의 주소와 제목 타입 출시년도 등이 나오는걸 확인이 가능하다!

그리고 이렇게 console.log 를 통해서만 확인이 가능한것이 아닌다 다른방법은

개발자도구의 

Network 탭 부분의 XHR 을 클릭하면 

 

이런식으로 확인이 가능함!

그러면 이제 search component 에서 받아온 res 데이터를 다른 component 에서 받아서 출력을 해줘야하는데

기본적으로 vue 에서는 부모와 자식 혹은 상위, 하위 요소들만 데이터를 교환할 수 있는데 

 형제 요소들은 데이터를 교환 할 수 있는 방법이 아주 제한적이다.

이것을 좀더 효율적으로 관리 할 수 있도록 Vuex (한곳에서 데이터를 처리해줄수 있는 라이브러리)라는 패키지를 설치해보겠다.

 

Vuex(Store)

 

우선 데이터를 출력해줄 MovieList 라는 컴포넌트와 그안에 실제 데이터를 출력해줄 MovieItem 이라는 컴포넌트 2개를 생성 하고 MovieItem 에는 실제 영하의 고유값인 movie.imdbID 를 고유 값을 할당해주도록한다!

 

현재 프로젝트의 관계를 부모자식의 관계록 나타낸 표이다.

 

프로젝트에서는 Search.vue 의 데이터를 여러vue 에 전달 해주어야하는데 번거로움을 없애고자 이럴때는

중앙집중식 상태관리 라이브러리(Vuex) 통상적으로 Store 라고 부른다.

데이터를 중앙집중화 되서 관리 할수있는 장소를 Store 라고 부른다.

그 장소에서 direct로 해당하는 components 에 뿌려줄수 있다. 

그리고 그데이터를 모듈화 해서 분류해서 관리 해주어야한다!

그럼 우선 설치를 진행하자!

npm run vue@next //3버전으로 설치

설치가 완료 되었다면 src 폴더 하위에 store 폴더를 생성후 그안에 파일로 index.js 파일을 생성 해주도록 하자 

그후 객체구조 분해를 통해서 함수를 하나 가지고 오고 

그함수를 실행 해주고 그안에 객체 리터럴로 modules 속성을 추가해준다.

이렇게 만들어진 index.js 파일을 main.js 파일에 연결해주도록 하자!

 연결후 store 폴더에 movie.js 와 about.js 파일 추가

연결!

https://v3.vuex.vuejs.org/kr/

 

Vuex가 무엇인가요? | Vuex

Vuex가 무엇인가요? Vuex는 Vue.js 애플리케이션에 대한 상태 관리 패턴 + 라이브러리 입니다. 애플리케이션의 모든 컴포넌트에 대한 중앙 집중식 저장소 역할을 하며 예측 가능한 방식으로 상태를

v3.vuex.vuejs.org

개념과 흐름을 파악할려면 읽어보는게 좋다 (vue2) 한글화문서로 설명이 잘 되있음

실제 코드는 vue.next (vue3) 검색!

 

 

'Vue.js 3' 카테고리의 다른 글

영화 검색 사이트 예제 -5  (0) 2022.10.06
영화 검색 사이트 예제 -4  (0) 2022.09.04
영화 검색 사이트 예제 -2  (0) 2022.08.31
영화 검색 사이트 예제 -1  (0) 2022.08.31
Computed  (0) 2022.08.30

+ Recent posts