大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Vue獲取數據的方法

Vue獲取數據的方法

更新時間:2022-05-31 09:17:25 來源:動力節點 瀏覽3139次

數據獲取

有時您需要在激活路由時從服務器獲取數據。例如,在呈現用戶配置文件之前,您需要從服務器獲取用戶數據。我們可以通過兩種不同的方式實現這一點:

導航后獲取

首先執行導航,并在傳入組件的生命周期鉤子中獲取數據。在獲取數據時顯示加載狀態。

Fetching Before Navigation : 在路由進入守衛中導航前獲取數據,獲取數據后進行導航。

從技術上講,兩者都是有效的選擇 - 它最終取決于您的目標用戶體驗。

導航后獲取#使用這種方法時,我們會立即導航和渲染傳入的組件,并在組件的created鉤子中獲取數據。它使我們有機會在通過網絡獲取數據時顯示加載狀態,并且我們還可以為每個視圖處理不同的加載。

假設我們有一個Post組件需要根據以下內容獲取帖子的數據$route.params.id:

<template>
  <div class="post">
    <div v-if="loading" class="loading">Loading...</div>
    <div v-if="error" class="error">{{ error }}</div>
    <div v-if="post" class="content">
      <h2>{{ post.title }}</h2>
      <p>{{ post.body }}</p>
    </div>
  </div>
</template>
export default {
  data() {
    return {
      loading: false,
      post: null,
      error: null,
    }
  },
  created() {
    // watch the params of the route to fetch the data again
    this.$watch(
      () => this.$route.params,
      () => {
        this.fetchData()
      },
      // fetch the data when the view is created and the data is
      // already being observed
      { immediate: true }
    )
  },
  methods: {
    fetchData() {
      this.error = this.post = null
      this.loading = true
      // replace `getPost` with your data fetching util / API wrapper
      getPost(this.$route.params.id, (err, post) => {
        this.loading = false
        if (err) {
          this.error = err.toString()
        } else {
          this.post = post
        }
      })
    },
  },
}

導航前獲取

通過這種方法,我們在實際導航到新路線之前獲取數據。我們可以beforeRouteEnter在傳入組件的守衛中執行數據獲取,并且僅next在獲取完成時調用:

export default {
  data() {
    return {
      post: null,
      error: null,
    }
  },
  beforeRouteEnter(to, from, next) {
    getPost(to.params.id, (err, post) => {
      next(vm => vm.setData(err, post))
    })
  },
  // when route changes and this component is already rendered,
  // the logic will be slightly different.
  async beforeRouteUpdate(to, from) {
    this.post = null
    try {
      this.post = await getPost(to.params.id)
    } catch (error) {
      this.error = error.toString()
    }
  },
}

在為傳入視圖獲取資源時,用戶將停留在前一個視圖上。因此,建議在獲取數據時顯示進度條或某種指示器。如果數據獲取失敗,還需要顯示某種全局警告消息。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 青青草免费视频在线播放 | 日韩精品久久久久久 | 波多野结衣xxxx性精品 | 12至16末成年毛片视频 | 国产精品美女 | 日本夜夜操| 成人永久福利在线观看不卡 | 97夜夜澡人人爽人人免费 | 香蕉视频国产在线观看 | 国产精品久久久久桃色tv | 欧美成人极品怡红院tv | 国产高清久久 | 欧美日本国产 | 夜色91| 九九热视频在线 | 久久久精 | 亚洲成人看片 | 亚洲天天做日日做天天欢毛片 | 久久精品一区二区影院 | 国产成人精品三级91在线影院 | 欧美a毛片 | 成人精品一区二区三区 | 九九亚洲综合精品自拍 | 天天舔天天干天天操 | 国产成人午夜性视频影院 | 精品不卡一区中文字幕 | 亚洲精品乱码国产精品乱码 | 91视频一区二区 | 精品美女在线观看 | 91久久综合九色综合欧美亚洲 | 精品在线免费播放 | 中文字幕色婷婷在线精品中 | 久久久久国产精品 | 国产一区二区三区久久 | 综合欧美视频一区二区三区 | 亚洲这里只有精品 | 国内精品久久久久影院不卡 | 99热久久这里只精品国产 | 日韩欧美一区二区三区不卡 | 精品推荐 国产 | 国产综合精品久久亚洲 |