Skip to content

Commit 87680b7

Browse files
committed
useMemo -> useRef
1 parent 34155ed commit 87680b7

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

packages/compass-telemetry/src/experimentation-provider.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { createContext, useContext, useMemo } from 'react';
1+
import React, { createContext, useContext, useRef } from 'react';
22

33
interface ExperimentAssignmentData {
44
variant: string | null;
@@ -68,10 +68,11 @@ export const CompassExperimentationProvider: React.FC<{
6868
useAssignment: UseAssignmentHookFn;
6969
assignExperiment: AssignExperimentFn;
7070
}> = ({ children, useAssignment, assignExperiment }) => {
71-
const contextValue = useMemo(
72-
() => ({ useAssignment, assignExperiment }),
73-
[useAssignment, assignExperiment]
74-
);
71+
// Use useRef to keep the functions up-to-date; maintain same object reference for context value
72+
// to prevent unnecessary re-renders of consuming components,
73+
const { current: contextValue } = useRef({ useAssignment, assignExperiment });
74+
contextValue.useAssignment = useAssignment;
75+
contextValue.assignExperiment = assignExperiment;
7576

7677
return (
7778
<ExperimentationContext.Provider value={contextValue}>

0 commit comments

Comments
 (0)