@@ -3,7 +3,10 @@ let { useCallback, useState, useLayoutEffect } = require('react')
33
44function getSize ( el ) {
55 if ( ! el ) {
6- return { }
6+ return {
7+ width : 0 ,
8+ height : 0
9+ }
710 }
811
912 return {
@@ -13,7 +16,9 @@ function getSize(el) {
1316}
1417
1518function useComponentSize ( ref ) {
16- let [ ComponentSize , setComponentSize ] = useState ( getSize ( ref . current ) )
19+ let [ ComponentSize , setComponentSize ] = useState (
20+ getSize ( ref ? ref . current : { } )
21+ )
1722
1823 const handleResize = useCallback (
1924 function handleResize ( ) {
@@ -24,28 +29,32 @@ function useComponentSize(ref) {
2429 [ ref ]
2530 )
2631
27- useLayoutEffect ( ( ) => {
28- if ( ! ref . current ) { return }
32+ useLayoutEffect (
33+ ( ) => {
34+ if ( ! ref . current ) {
35+ return
36+ }
2937
30- handleResize ( )
38+ handleResize ( )
3139
32- if ( typeof ResizeObserver === 'function' ) {
33- let resizeObserver = new ResizeObserver ( ( ) => handleResize ( ) )
34- resizeObserver . observe ( ref . current )
40+ if ( typeof ResizeObserver === 'function' ) {
41+ let resizeObserver = new ResizeObserver ( ( ) => handleResize ( ) )
42+ resizeObserver . observe ( ref . current )
3543
36- return ( ) => {
37- resizeObserver . disconnect ( ref . current )
38- resizeObserver = null
39- }
40- } else {
41- window . addEventListener ( 'resize' , handleResize )
42-
43- return ( ) => {
44- window . removeEventListener ( 'resize' , handleResize )
44+ return ( ) => {
45+ resizeObserver . disconnect ( ref . current )
46+ resizeObserver = null
47+ }
48+ } else {
49+ window . addEventListener ( 'resize' , handleResize )
50+
51+ return ( ) => {
52+ window . removeEventListener ( 'resize' , handleResize )
53+ }
4554 }
46- }
47-
48- } , [ ref . current ] )
55+ } ,
56+ [ ref . current ]
57+ )
4958
5059 return ComponentSize
5160}
0 commit comments