@@ -12,7 +12,7 @@ import {
1212 InfoSprinkle ,
1313 Tooltip ,
1414} from '@mongodb-js/compass-components' ;
15- import React , { useState } from 'react' ;
15+ import React , { useState , useCallback } from 'react' ;
1616import type { Field } from '../../modules/create-index' ;
1717import MDBCodeViewer from './mdb-code-viewer' ;
1818
@@ -173,25 +173,30 @@ const IndexFlowSection = ({
173173 { }
174174 ) ;
175175
176- const coveredQueriesArr = fields . map ( ( field , index ) => {
177- return { [ field . name ] : index + 1 } ;
176+ const [ coveredQueriesObj , setCoveredQueriesObj ] = useState < {
177+ coveredQueries : JSX . Element ;
178+ optimalQueries : string | JSX . Element ;
179+ showCoveredQueries : boolean ;
180+ } > ( {
181+ coveredQueries : < > </ > ,
182+ optimalQueries : '' ,
183+ showCoveredQueries : false ,
178184 } ) ;
179185
180- const [ coveredQueriesExamples , setCoveredQueriesExamples ] =
181- useState < JSX . Element > ( < > </ > ) ;
182- const [ optimalQueriesExamples , setOptimalQueriesExamples ] = useState <
183- string | JSX . Element
184- > ( '' ) ;
185- const [ showCoveredQueries , setShowCoveredQueries ] = useState ( false ) ;
186+ const onCoveredQueriesButtonClick = useCallback ( ( ) => {
187+ const coveredQueriesArr = fields . map ( ( field , index ) => {
188+ return { [ field . name ] : index + 1 } ;
189+ } ) ;
186190
187- const onCoveredQueriesButtonClick = ( ) => {
188- generateCoveredQueries ( coveredQueriesArr ) ;
189- generateOptimalQueries ( coveredQueriesArr ) ;
191+ setCoveredQueriesObj ( {
192+ coveredQueries : generateCoveredQueries ( coveredQueriesArr ) ,
193+ optimalQueries : generateOptimalQueries ( coveredQueriesArr ) ,
194+ showCoveredQueries : true ,
195+ } ) ;
196+ } , [ fields ] ) ;
190197
191- setCoveredQueriesExamples ( generateCoveredQueries ( coveredQueriesArr ) ) ;
192- setOptimalQueriesExamples ( generateOptimalQueries ( coveredQueriesArr ) ) ;
193- setShowCoveredQueries ( true ) ;
194- } ;
198+ const { coveredQueries, optimalQueries, showCoveredQueries } =
199+ coveredQueriesObj ;
195200
196201 return (
197202 < div >
@@ -280,10 +285,10 @@ const IndexFlowSection = ({
280285 className = { codeStyles }
281286 data-testid = "index-flow-section-covered-queries-examples"
282287 >
283- { coveredQueriesExamples }
288+ { coveredQueries }
284289 </ Body >
285290
286- { ! ! optimalQueriesExamples && (
291+ { ! ! optimalQueries && (
287292 < >
288293 < p >
289294 < span className = { underlineStyles } >
@@ -295,7 +300,7 @@ const IndexFlowSection = ({
295300 className = { codeStyles }
296301 data-testid = "index-flow-section-optimal-queries-examples"
297302 >
298- { optimalQueriesExamples }
303+ { optimalQueries }
299304 </ Body >
300305 </ p >
301306 < Link href = "https://www.mongodb.com/docs/manual/core/query-optimization/" >
0 commit comments