Skip to content

Commit 7d4e7f9

Browse files
committed
add early returns
1 parent 09f2000 commit 7d4e7f9

1 file changed

Lines changed: 23 additions & 4 deletions

File tree

packages/x-charts/src/internals/plugins/featurePlugins/useChartCartesianAxis/useChartCartesianAxis.ts

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { getAxisIndex } from './getAxisValue';
1616
import { getSVGPoint } from '../../../getSVGPoint';
1717
import {
1818
selectorChartsInteractionIsInitialized,
19+
selectorChartsInteractionPointer,
1920
UseChartInteractionSignature,
2021
} from '../useChartInteraction';
2122
import {
@@ -105,6 +106,10 @@ export const useChartCartesianAxis: ChartPlugin<UseChartCartesianAxisSignature<a
105106
const usedYAxis = yAxisIds[0];
106107

107108
React.useEffect(() => {
109+
if (!onAxisInteraction) {
110+
return undefined;
111+
}
112+
108113
const subscribeModifications = (
109114
newStoreState: ChartState<
110115
[UseChartCartesianAxisSignature<any>],
@@ -115,12 +120,26 @@ export const useChartCartesianAxis: ChartPlugin<UseChartCartesianAxisSignature<a
115120
[UseChartInteractionSignature]
116121
>,
117122
) => {
118-
if (!onAxisInteraction) {
123+
const newXAxis = selectorChartXAxis(newStoreState);
124+
const prevXAxis = selectorChartXAxis(prevStoreState);
125+
126+
const newYAxis = selectorChartYAxis(newStoreState);
127+
const prevYAxis = selectorChartYAxis(prevStoreState);
128+
129+
const newPointer = selectorChartsInteractionPointer(newStoreState);
130+
const prevPointer = selectorChartsInteractionPointer(prevStoreState);
131+
132+
if (
133+
Object.is(newXAxis, prevXAxis) &&
134+
!Object.is(newYAxis, prevYAxis) &&
135+
!Object.is(newPointer, prevPointer)
136+
) {
137+
// Early return if the update is not about axes or pointer.
119138
return;
120139
}
121140

122-
const newXAxisIds = selectorChartRawXAxis(newStoreState)?.map((axis) => axis.id) ?? [];
123-
const newYAxisIds = selectorChartRawYAxis(newStoreState)?.map((axis) => axis.id) ?? [];
141+
const newXAxisIds = newXAxis.axisIds;
142+
const newYAxisIds = newYAxis.axisIds;
124143

125144
const newAxisPointerInteraction: AxisItemIdentifier[] = [];
126145
let isSame = true;
@@ -182,7 +201,7 @@ export const useChartCartesianAxis: ChartPlugin<UseChartCartesianAxisSignature<a
182201
return () => {
183202
unsubscribe();
184203
};
185-
}, [onAxisInteraction]);
204+
}, [onAxisInteraction, store]);
186205

187206
React.useEffect(() => {
188207
const element = svgRef.current;

0 commit comments

Comments
 (0)