@@ -16,6 +16,7 @@ import { getAxisIndex } from './getAxisValue';
1616import { getSVGPoint } from '../../../getSVGPoint' ;
1717import {
1818 selectorChartsInteractionIsInitialized ,
19+ selectorChartsInteractionPointer ,
1920 UseChartInteractionSignature ,
2021} from '../useChartInteraction' ;
2122import {
@@ -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