From 89434608d009bf4b2a8feeb0b1100be1f4671934 Mon Sep 17 00:00:00 2001 From: Alexandru Buliga Date: Fri, 31 May 2019 17:44:48 +0200 Subject: [PATCH] addressed last comments --- packages/react/src/lib/positioner/Popper.tsx | 46 ++++++++------------ 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/packages/react/src/lib/positioner/Popper.tsx b/packages/react/src/lib/positioner/Popper.tsx index b208a010b..83f3bc7e6 100644 --- a/packages/react/src/lib/positioner/Popper.tsx +++ b/packages/react/src/lib/positioner/Popper.tsx @@ -37,8 +37,10 @@ const Popper: React.FunctionComponent = props => { const popperRef = React.useRef() const contentRef = React.useRef(null) - const latestPlacement = React.useRef() - const [computedPlacement, setComputedPlacement] = React.useState() + const latestPlacement = React.useRef(proposedPlacement) + const [computedPlacement, setComputedPlacement] = React.useState( + proposedPlacement, + ) const computedModifiers: PopperJS.Modifiers = React.useMemo( () => @@ -49,32 +51,18 @@ const Popper: React.FunctionComponent = props => { [rtl, offset, position], ) - const scheduleUpdate = React.useCallback( - () => { - if (popperRef.current) { - popperRef.current.scheduleUpdate() - } - }, - [popperRef.current], - ) - - const destroyInstance = React.useCallback( - () => { - if (popperRef.current) { - popperRef.current.destroy() - popperRef.current = null - } - }, - [popperRef.current], - ) + const scheduleUpdate = React.useCallback(() => { + if (popperRef.current) { + popperRef.current.scheduleUpdate() + } + }, []) - const instanceDependencies = [ - computedModifiers, - enabled, - userModifiers, - positionFixed, - proposedPlacement, - ] + const destroyInstance = React.useCallback(() => { + if (popperRef.current) { + popperRef.current.destroy() + popperRef.current = null + } + }, []) const createInstance = React.useCallback( () => { @@ -131,7 +119,7 @@ const Popper: React.FunctionComponent = props => { popperRef.current = createPopper(targetRef.current, contentRef.current, options) }, - [targetRef.current, contentRef.current, ...instanceDependencies], + [computedModifiers, enabled, userModifiers, positionFixed, proposedPlacement], ) React.useEffect( @@ -139,7 +127,7 @@ const Popper: React.FunctionComponent = props => { createInstance() return destroyInstance }, - [computedModifiers, enabled, userModifiers, positionFixed, proposedPlacement], + [createInstance], ) React.useEffect(scheduleUpdate, [...positioningDependencies, computedPlacement])