最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue父組件異步如何獲取數(shù)據(jù)傳給子組件

 更新時間:2023年11月09日 09:49:21   作者:donggua_123  
這篇文章主要介紹了vue父組件異步如何獲取數(shù)據(jù)傳給子組件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

vue父組件異步獲取數(shù)據(jù)傳給子組件

最近一直在做一個vue移動端商城的實戰(zhàn),期間遇到一個小小的問題,值得一說,可能別人已經(jīng)遇到過了,只是我第一次遇到而已。

首頁有個樓層區(qū)域,用于展示不同類別的商品,

比如:水果,衣服,酒水等,布局都是一樣的,所以將單個樓層獨立出來成一個組件,只需要給響應的樓層傳入對應的數(shù)據(jù)就可以按需渲染了:

先在父組件引入,并注冊樓層組件

 import Floor from '@/components/pages/common/Floor'
 components: {
      swiper,
      swiperSlide,
      Floor
    }

數(shù)據(jù)初始化

data() {
      return {
        locationIcon: require('../../assets/images/location.png'),
        bannerSwipePics: [],
        category: [],
        adBar: '',
        recommendGoods: [],
        swiperOptions: {
          slidesPerView: 3
        },
        floorSeafood: {},
        floorBeverage: {},
        floorFruits: {}
      }
    },

使用組件

<!--樓層-->
        <Floor :floorGoods='floorSeafood'></Floor>
        <Floor :floorGoods='floorBeverage'></Floor>
        <Floor :floorGoods='floorFruits'></Floor>

在子組件里進行一下數(shù)據(jù)接收就行

props: ['floorGoods']

但是現(xiàn)在問題是父組件的數(shù)據(jù)是異步獲取的,而子組件一開始就會渲染,如果此時沒有傳入數(shù)據(jù),而子組件又要用到數(shù)據(jù)中的length屬性時就會報錯:

雖然頁面也能正常渲染,但是看到這個紅紅的報錯提示就不爽!

怎么辦呢?最簡單的辦法就是讓子組件條件渲染,當有數(shù)據(jù)的時候才渲染,這樣就不會拋出錯誤了。

但是這還不夠完美,子組件一般不直接使用父組件傳來的值,二是監(jiān)聽一下,然后有變化了的時候再賦值給data,渲染的時候用data里的數(shù)據(jù),這樣就能保證隨時動態(tài)更新數(shù)據(jù)

props: ['floorGoods'],
      data() {
        return{
          flGoods: {}
        }
      },
      watch: {
        floorGoods(val) {
          this.flGoods = val;
          console.log(val);
        }
      }

在一個方法就是在父組件里用Promise方法異步執(zhí)行數(shù)據(jù)的賦值:

new Promise((resolve,reject) => {
          if (res.status === 200){
            resolve(res);
          }
        }).then((res) => {
          this.category = res.data.data.category;
          this.adBar = res.data.data.advertesPicture.PICTURE_ADDRESS;
          this.bannerSwipePics = res.data.data.slides;
          this.recommendGoods = res.data.data.recommend;
          // 也可異步獲取再傳給子組件 Promise
          this.floorSeafood = res.data.data.floor1;
          this.floorBeverage = res.data.data.floor2;
          this.floorFruits = res.data.data.floor3;
          console.log(this.floorFruits);
          this._initScroll();
        })
      }).catch(err => {
        console.log(err);
      });

這樣也是可以的,異步獲取數(shù)據(jù)導致的報錯的情況會在各個場景出現(xiàn),比如根據(jù)數(shù)據(jù)渲染dom,而對dom有js操作的時候,會因為還沒渲染出來而找不到響應的dom元素報錯,這里可以用vue提供的$nextTick()函數(shù),或者手動開個setTimeout定時器,延遲獲取;

使用better-scroll的時候因為dom沒有渲染出來而無法獲取滾動元素的高度,導致無法滾動,同樣可以用vue提供的這個函數(shù),等dom渲染完了后再初始化滾動。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue混入與插件的使用介紹

    Vue混入與插件的使用介紹

    這篇文章主要介紹了Vue混入與插件的使用,mixins(混入),官方的描述是一種分發(fā) Vue 組件中可復用功能的非常靈活的方式,mixins是一個js對象,它可以包含我們組件中script項中的任意功能選項,如data、components、methods 、created、computed等等
    2022-09-09
  • Vue中的watch是什么以及watch和computed的區(qū)別

    Vue中的watch是什么以及watch和computed的區(qū)別

    這篇文章主要介紹了Vue中的watch是什么以及watch和computed的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • vue引入jquery時報錯 $ is not defined的問題及解決

    vue引入jquery時報錯 $ is not defined的問題及解決

    這篇文章主要介紹了vue引入jquery時報錯 $ is not defined的問題及解決,具有很好的參考價值,希望對大家有所幫助。
    2022-09-09
  • vue中常用的縮寫方式

    vue中常用的縮寫方式

    這篇文章主要介紹了vue中常用的縮寫方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue中template的三種寫法示例

    vue中template的三種寫法示例

    這篇文章主要介紹了vue中template的三種寫法示例,幫助大家更好的理解和學習vue,感興趣的朋友可以了解下
    2020-10-10
  • Vue實現(xiàn)圖片輪播組件思路及實例解析

    Vue實現(xiàn)圖片輪播組件思路及實例解析

    這篇文章主要介紹了Vue實現(xiàn)圖片輪播組件思路及實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • Vue如何實現(xiàn)iframe的上一步、下一步操作

    Vue如何實現(xiàn)iframe的上一步、下一步操作

    這篇文章主要介紹了Vue如何實現(xiàn)iframe的上一步、下一步操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 詳解uniapp的生命周期

    詳解uniapp的生命周期

    這篇文章主要介紹了uniapp的生命周期,應用生命周期是指應用程序從啟動到關(guān)閉的整個過程,包括應用程序的啟動、前后臺切換、退出等,需要的朋友可以參考下
    2023-04-04
  • Element-UI表格嵌入popover遇到的問題及解決方案

    Element-UI表格嵌入popover遇到的問題及解決方案

    在表格中我們通常需要在每一行的一些單元格中顯示popover,這篇文章主要給大家介紹了關(guān)于Element-UI表格嵌入popover遇到的問題及解決方案,需要的朋友可以參考下
    2023-11-11
  • vue前端更新后需要清空緩存代碼示例

    vue前端更新后需要清空緩存代碼示例

    這篇文章主要給大家介紹了關(guān)于vue前端更新后需要清空緩存的相關(guān)資料,文中通過代碼介紹的非常詳細,對大家學習或者使用vue具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-10-10

最新評論

江达县| 尼勒克县| 黄龙县| 六枝特区| 望奎县| 清远市| 定西市| 梧州市| 汝南县| 镇平县| 湖南省| 中方县| 泗水县| 大洼县| 化隆| 石棉县| 安阳县| 高陵县| 荔波县| 天津市| 紫金县| 射洪县| 多伦县| 台北县| 鄂州市| 白朗县| 通渭县| 乐山市| 德保县| 紫金县| 沽源县| 塔城市| 青浦区| 安乡县| 陆河县| 罗田县| 竹溪县| 北票市| 武宁县| 敖汉旗| 沧州市|