Avoid using getBoundingClientRect to calculate height (#4001)
This commit is contained in:
		
							parent
							
								
									8fecd80108
								
							
						
					
					
						commit
						63b77f2320
					
				
					 4 changed files with 30 additions and 20 deletions
				
			
		|  | @ -12,7 +12,6 @@ class Bundle extends React.Component { | |||
|     error: PropTypes.func, | ||||
|     children: PropTypes.func.isRequired, | ||||
|     renderDelay: PropTypes.number, | ||||
|     onRender: PropTypes.func, | ||||
|     onFetch: PropTypes.func, | ||||
|     onFetchSuccess: PropTypes.func, | ||||
|     onFetchFail: PropTypes.func, | ||||
|  | @ -22,7 +21,6 @@ class Bundle extends React.Component { | |||
|     loading: emptyComponent, | ||||
|     error: emptyComponent, | ||||
|     renderDelay: 0, | ||||
|     onRender: noop, | ||||
|     onFetch: noop, | ||||
|     onFetchSuccess: noop, | ||||
|     onFetchFail: noop, | ||||
|  | @ -43,10 +41,6 @@ class Bundle extends React.Component { | |||
|     } | ||||
|   } | ||||
| 
 | ||||
|   componentDidUpdate () { | ||||
|     this.props.onRender(); | ||||
|   } | ||||
| 
 | ||||
|   componentWillUnmount () { | ||||
|     if (this.timeout) { | ||||
|       clearTimeout(this.timeout); | ||||
|  |  | |||
|  | @ -0,0 +1,21 @@ | |||
| 
 | ||||
| // Get the bounding client rect from an IntersectionObserver entry.
 | ||||
| // This is to work around a bug in Chrome: https://crbug.com/737228
 | ||||
| 
 | ||||
| let hasBoundingRectBug; | ||||
| 
 | ||||
| function getRectFromEntry(entry) { | ||||
|   if (typeof hasBoundingRectBug !== 'boolean') { | ||||
|     const boundingRect = entry.target.getBoundingClientRect(); | ||||
|     const observerRect = entry.boundingClientRect; | ||||
|     hasBoundingRectBug = boundingRect.height !== observerRect.height || | ||||
|       boundingRect.top !== observerRect.top || | ||||
|       boundingRect.width !== observerRect.width || | ||||
|       boundingRect.bottom !== observerRect.bottom || | ||||
|       boundingRect.left !== observerRect.left || | ||||
|       boundingRect.right !== observerRect.right; | ||||
|   } | ||||
|   return hasBoundingRectBug ? entry.target.getBoundingClientRect() : entry.boundingClientRect; | ||||
| } | ||||
| 
 | ||||
| export default getRectFromEntry; | ||||
		Reference in a new issue