1. DB와 연결하기

1) params에 위치한 영화 id를 이용하여 요청하기

created(){
    console.log(this.$route.params)  
  }
actions: {
    // 영화 상세정보 vuex에 저장하기
    setMovieDetail({commit}, data){
      commit("SET_MOVIE_DETAIL", data)
    },

    // 영화 상세정보 요청하기
    fetchMovieDetail({dispatch}, movieId){
      axios({
        url: drf.movie.movieDetail(movieId),
        method: "get"
      }).then((response)=> {
        dispatch("setMovieDetail", response.data)
      }).catch((error)=> {
        if (error.response.status === 404){
          router.push({name: "NotFound"})
        }
      })
    }
}

해당 요청을 페이지를 created()할 때마다 한다.

2) 컴포넌트를 생성한다.

비동기적으로 데이터를 받아서 컴포넌트를 구성하다보면 데이터가 오기전에 랜더되어 undefined값을 받아오는 경우가 있다. (화면에는 영향을 끼치지 않지만, 콘솔로그에는 오류 로그가 뜬다.)

<template>
  <movie-detail-card
    v-if="imageUrl !== undefined"
    :image="imageUrl"
    width="100px"
    height="200px"
  ></movie-detail-card>
</template>

그런 상황을 막기 위해 위와 같은 조건을 주었다.