فهرست منبع

fix: 修复渲染时无法获取元素位置导致的空白问题

zhangyuhan 1 سال پیش
والد
کامیت
c0db4f883b
2فایلهای تغییر یافته به همراه19 افزوده شده و 2 حذف شده
  1. 12 1
      src/components/scroll-tabs/ScrollTabs.vue
  2. 7 1
      src/pages/search/content/bidding/index.vue

+ 12 - 1
src/components/scroll-tabs/ScrollTabs.vue

@@ -81,6 +81,7 @@ export default {
       return height - firstTop
       return height - firstTop
     },
     },
     computedContentTop () {
     computedContentTop () {
+      clearTimeout(this.computedTf)
       const query = Taro.createSelectorQuery()
       const query = Taro.createSelectorQuery()
       query.select(`#scroller`).boundingClientRect()
       query.select(`#scroller`).boundingClientRect()
       this.tabs.forEach(item => {
       this.tabs.forEach(item => {
@@ -92,7 +93,17 @@ export default {
         this.contentClientRects = res
         this.contentClientRects = res
         this.contentScrollTops = tabs.map(ele => {
         this.contentScrollTops = tabs.map(ele => {
           console.log(ele, 'ele')
           console.log(ele, 'ele')
-          return ele.top - scrollerTop.top
+          if (ele) {
+            return ele.top - scrollerTop?.top
+          } else {
+            console.log('未获取 dom')
+            this.computedTf = setTimeout(() => {
+              this.$nextTick(() => {
+                this.computedContentTop()
+              })
+            }, 200)
+            return 0
+          }
         })
         })
       })
       })
     },
     },

+ 7 - 1
src/pages/search/content/bidding/index.vue

@@ -16,7 +16,7 @@
             :other-model="otherModel"
             :other-model="otherModel"
             @clickShare="clickShare"
             @clickShare="clickShare"
           />
           />
-          <ScrollTabs class="content-container" ref="scrollTabs" :value="pageState.tabActive" :tabs="showTabList">
+          <ScrollTabs v-if="canShowTabs" class="content-container" ref="scrollTabs" :value="pageState.tabActive" :tabs="showTabList">
             <div class="content-scroll-container">
             <div class="content-scroll-container">
               <view id="summary" class="content-summary" v-if="baseModuleShow.summary">
               <view id="summary" class="content-summary" v-if="baseModuleShow.summary">
                 <ContentAbstract
                 <ContentAbstract
@@ -201,6 +201,12 @@ export default {
     },
     },
     advancedModuleShow() {
     advancedModuleShow() {
       return this.expandModel.moduleShow
       return this.expandModel.moduleShow
+    },
+    canShowTabs () {
+      if (!this.reqState.loaded) {
+        return false
+      }
+      return this.baseModuleShow.summary || this.baseModuleShow.content || this.advancedModuleShow.timeline
     }
     }
   },
   },
   onShareAppMessage (res) {
   onShareAppMessage (res) {