fix bug in layout calculations
This commit is contained in:
		
							parent
							
								
									7a510101d0
								
							
						
					
					
						commit
						b98a0c6b85
					
				
					 1 changed files with 4 additions and 15 deletions
				
			
		| 
						 | 
				
			
			@ -24,20 +24,9 @@
 | 
			
		|||
  import { virtualListStore } from './virtualListStore'
 | 
			
		||||
  import { AsyncLayout } from '../../_utils/AsyncLayout'
 | 
			
		||||
 | 
			
		||||
  const keyGetter = node => node.getAttribute('virtual-list-key')
 | 
			
		||||
  const asyncLayout = new AsyncLayout(keyGetter)
 | 
			
		||||
 | 
			
		||||
  export default {
 | 
			
		||||
    oncreate() {
 | 
			
		||||
      let key = this.get('key')
 | 
			
		||||
      asyncLayout.observe(key, this.refs.node, (rect) => {
 | 
			
		||||
        // update all item heights in one microtask batch for better perf
 | 
			
		||||
        this.store.batchUpdate('itemHeights', key, rect.height)
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    ondestroy() {
 | 
			
		||||
      let key = this.get('key')
 | 
			
		||||
      asyncLayout.unobserve(key, this.refs.node)
 | 
			
		||||
      this.doRecalculateHeight()
 | 
			
		||||
    },
 | 
			
		||||
    store: () => virtualListStore,
 | 
			
		||||
    computed: {
 | 
			
		||||
| 
						 | 
				
			
			@ -45,10 +34,10 @@
 | 
			
		|||
    },
 | 
			
		||||
    methods: {
 | 
			
		||||
      doRecalculateHeight() {
 | 
			
		||||
        let tempAsyncLayout = new AsyncLayout(keyGetter)
 | 
			
		||||
        let asyncLayout = new AsyncLayout(node => node.getAttribute('virtual-list-key'))
 | 
			
		||||
        let key = this.get('key')
 | 
			
		||||
        tempAsyncLayout.observe(key, this.refs.node, (rect) => {
 | 
			
		||||
          tempAsyncLayout.disconnect()
 | 
			
		||||
        asyncLayout.observe(key, this.refs.node, (rect) => {
 | 
			
		||||
          asyncLayout.disconnect()
 | 
			
		||||
          // update all item heights in one microtask batch for better perf
 | 
			
		||||
          this.store.batchUpdate('itemHeights', key, rect.height)
 | 
			
		||||
        })
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue