perf[TagsView]: set the scrollPane as a business component (#1660)
This commit is contained in:
		@@ -14,16 +14,21 @@ export default {
 | 
				
			|||||||
      left: 0
 | 
					      left: 0
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					  computed: {
 | 
				
			||||||
 | 
					    scrollWrapper() {
 | 
				
			||||||
 | 
					      return this.$refs.scrollContainer.$refs.wrap
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
  methods: {
 | 
					  methods: {
 | 
				
			||||||
    handleScroll(e) {
 | 
					    handleScroll(e) {
 | 
				
			||||||
      const eventDelta = e.wheelDelta || -e.deltaY * 40
 | 
					      const eventDelta = e.wheelDelta || -e.deltaY * 40
 | 
				
			||||||
      const $scrollWrapper = this.$refs.scrollContainer.$refs.wrap
 | 
					      const $scrollWrapper = this.scrollWrapper
 | 
				
			||||||
      $scrollWrapper.scrollLeft = $scrollWrapper.scrollLeft + eventDelta / 4
 | 
					      $scrollWrapper.scrollLeft = $scrollWrapper.scrollLeft + eventDelta / 4
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    moveToTarget(currentTag) {
 | 
					    moveToTarget(currentTag) {
 | 
				
			||||||
      const $container = this.$refs.scrollContainer.$el
 | 
					      const $container = this.$refs.scrollContainer.$el
 | 
				
			||||||
      const $containerWidth = $container.offsetWidth
 | 
					      const $containerWidth = $container.offsetWidth
 | 
				
			||||||
      const $scrollWrapper = this.$refs.scrollContainer.$refs.wrap
 | 
					      const $scrollWrapper = this.scrollWrapper
 | 
				
			||||||
      const tagList = this.$parent.$refs.tag
 | 
					      const tagList = this.$parent.$refs.tag
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      let firstTag = null
 | 
					      let firstTag = null
 | 
				
			||||||
@@ -44,6 +49,7 @@ export default {
 | 
				
			|||||||
        const currentIndex = tagList.findIndex(item => item === currentTag)
 | 
					        const currentIndex = tagList.findIndex(item => item === currentTag)
 | 
				
			||||||
        const prevTag = tagList[currentIndex - 1]
 | 
					        const prevTag = tagList[currentIndex - 1]
 | 
				
			||||||
        const nextTag = tagList[currentIndex + 1]
 | 
					        const nextTag = tagList[currentIndex + 1]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // the tag's offsetLeft after of nextTag
 | 
					        // the tag's offsetLeft after of nextTag
 | 
				
			||||||
        const afterNextTagOffsetLeft = nextTag.$el.offsetLeft + nextTag.$el.offsetWidth + tagAndTagSpacing
 | 
					        const afterNextTagOffsetLeft = nextTag.$el.offsetLeft + nextTag.$el.offsetWidth + tagAndTagSpacing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -26,7 +26,7 @@
 | 
				
			|||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
import ScrollPane from '@/components/ScrollPane'
 | 
					import ScrollPane from './ScrollPane'
 | 
				
			||||||
import { generateTitle } from '@/utils/i18n'
 | 
					import { generateTitle } from '@/utils/i18n'
 | 
				
			||||||
import path from 'path'
 | 
					import path from 'path'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -90,7 +90,6 @@ export default {
 | 
				
			|||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
 | 
					 | 
				
			||||||
      return tags
 | 
					      return tags
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    initTags() {
 | 
					    initTags() {
 | 
				
			||||||
@@ -115,12 +114,10 @@ export default {
 | 
				
			|||||||
        for (const tag of tags) {
 | 
					        for (const tag of tags) {
 | 
				
			||||||
          if (tag.to.path === this.$route.path) {
 | 
					          if (tag.to.path === this.$route.path) {
 | 
				
			||||||
            this.$refs.scrollPane.moveToTarget(tag)
 | 
					            this.$refs.scrollPane.moveToTarget(tag)
 | 
				
			||||||
 | 
					 | 
				
			||||||
            // when query is different then update
 | 
					            // when query is different then update
 | 
				
			||||||
            if (tag.to.fullPath !== this.$route.fullPath) {
 | 
					            if (tag.to.fullPath !== this.$route.fullPath) {
 | 
				
			||||||
              this.$store.dispatch('updateVisitedView', this.$route)
 | 
					              this.$store.dispatch('updateVisitedView', this.$route)
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					 | 
				
			||||||
            break
 | 
					            break
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -178,8 +175,8 @@ export default {
 | 
				
			|||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        this.left = left
 | 
					        this.left = left
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      this.top = e.clientY
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      this.top = e.clientY
 | 
				
			||||||
      this.visible = true
 | 
					      this.visible = true
 | 
				
			||||||
      this.selectedTag = tag
 | 
					      this.selectedTag = tag
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
export { default as Navbar } from './Navbar'
 | 
					export { default as Navbar } from './Navbar'
 | 
				
			||||||
export { default as Sidebar } from './Sidebar/index.vue'
 | 
					export { default as Sidebar } from './Sidebar/index.vue'
 | 
				
			||||||
export { default as TagsView } from './TagsView'
 | 
					export { default as TagsView } from './TagsView/index.vue'
 | 
				
			||||||
export { default as AppMain } from './AppMain'
 | 
					export { default as AppMain } from './AppMain'
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user