웹프레임워크/vue.js

라우터 이동 시 데이터 가져오기

quantumcode 2022. 2. 4. 01:27
728x90

1. component 랜더링 완료 후

라우터 이동  시 params 값을 체크하여 데이터를 가져오는 방식으로 아래와 같이 watch를 사용하여 component가 랜더링 완료 후 가져오는 방식이 있습니다.  데이터 로드가 느리거나 로딩 이미지가 필요할 때 사용 

created() {
  // 컴포넌트 생성시 데이터를 패치한다
  this.fetchData()
  },
  watch: {
    '$route': 'fetchData'
  },
  methods: {
    fetchData () {
      this.loading = true
      db.collection('user').where('ep_id', '==', this.$route.params.employee_id).get()
        .then(querySnapshop => {
          querySnapshop.forEach(doc => {
            this.loading = false
            this.user.ep_id = doc.data().ep_id
            this.user.name = doc.data().name
            this.user.age = doc.data().age            
            console.log(doc.data().ep_id)
            console.log('method:view')
          })
        })
    }

 

 

2. component 랜더링 완료 전

beforeRouteEnter를 사용 component 랜더링 전에 데이터를 가져올 수 있습니다. 랜더링 이전이기 때문에 this, $el을 사용할 수 없기때문에 next 콜백 할 수를 사용하여 vm 매개변수를 사용하여  현재 변수에 접근할 수 있습니다.  해당 방식은 데이터 로딩 딜레이가 없을 경우 사용할 경우 사용자가 데이터 접근 환경이 좋아질 것으로 보여집니다.

beforeRouteEnter (to, from, next) {
    db.collection('user').where('ep_id', '==', to.params.employee_id).get()
      .then(querySnapshop => {
        querySnapshop.forEach(doc => {
          next(vm => {
            vm.user.ep_id = doc.data().ep_id
            vm.user.name = doc.data().name
            vm.user.age = doc.data().age
            console.log(vm.user.ep_id = doc.data().ep_id)
          })
          // console.log(doc.data())
        })
      })
    // console.log(to.params.employee_id)
  }

 

'웹프레임워크 > vue.js' 카테고리의 다른 글

how to install nvm  (0) 2023.05.18
beforeRouteLeave 사용방법  (0) 2022.02.05
프로그래밍 방식 네비게이션  (0) 2022.01.23
mounted, created 차이점  (0) 2022.01.22
firebase 파일 분화하여 적용  (0) 2022.01.21