Skip to content

Commit 4c66edb

Browse files
committed
Use the usePrevious hook.
1 parent 6da8646 commit 4c66edb

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

ui/src/app/base/components/ContextualMenu/ContextualMenu.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import React, { useEffect, useRef } from "react";
66
import usePortal from "react-useportal";
77

88
import ContextualMenuDropdown from "./ContextualMenuDropdown";
9+
import { usePrevious } from "app/base/hooks";
910

1011
const ContextualMenu = ({
1112
className,
@@ -29,7 +30,7 @@ const ContextualMenu = ({
2930
const { openPortal, closePortal, isOpen, Portal } = usePortal({
3031
isOpen: !hasToggle,
3132
});
32-
const previousIsOpen = useRef(isOpen);
33+
const previousIsOpen = usePrevious(isOpen);
3334
const labelNode = toggleLabel ? <span>{toggleLabel}</span> : null;
3435
const wrapperClass = classNames(
3536
className,
@@ -42,9 +43,8 @@ const ContextualMenu = ({
4243
// The isOpen state is compared to the previous state so that we can
4344
// initialise the previous state in a way that means that this effect does
4445
// not call onToggleMenu on first render.
45-
if (isOpen !== previousIsOpen.current) {
46+
if (isOpen !== previousIsOpen) {
4647
onToggleMenu && onToggleMenu(isOpen);
47-
previousIsOpen.current = isOpen;
4848
}
4949
// onToggleMenu is excluded from the useEffect deps as onToggleMenu gets
5050
// redefined on a state update which causes an infinite loop here.

ui/src/app/base/hooks.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@ export const useLocation = () => {
4343
* @returns {*} Previous value.
4444
*/
4545
export const usePrevious = (value) => {
46-
const ref = useRef();
46+
const ref = useRef(value);
4747
useEffect(() => {
4848
ref.current = value;
49-
});
49+
}, [value]);
5050
return ref.current;
5151
};
5252

0 commit comments

Comments
 (0)