diff --git a/superset-frontend/src/explore/components/DataTablesPane/components/useResultsPane.tsx b/superset-frontend/src/explore/components/DataTablesPane/components/useResultsPane.tsx index 82e8377abd4d2..9b6b597c7900f 100644 --- a/superset-frontend/src/explore/components/DataTablesPane/components/useResultsPane.tsx +++ b/superset-frontend/src/explore/components/DataTablesPane/components/useResultsPane.tsx @@ -35,7 +35,7 @@ const Error = styled.pre` margin-top: ${({ theme }) => `${theme.gridUnit * 4}px`}; `; -const cache = new WeakSet(); +const cache = new WeakMap(); export const useResultsPane = ({ isRequest, @@ -59,6 +59,14 @@ export const useResultsPane = ({ useEffect(() => { // it's an invalid formData when gets a errorMessage if (errorMessage) return; + if (isRequest && cache.has(queryFormData)) { + setResultResp(ensureIsArray(cache.get(queryFormData))); + setResponseError(''); + if (queryForce && actions) { + actions.setForceQuery(false); + } + setIsLoading(false); + } if (isRequest && !cache.has(queryFormData)) { setIsLoading(true); getChartDataRequest({ @@ -71,7 +79,7 @@ export const useResultsPane = ({ .then(({ json }) => { setResultResp(ensureIsArray(json.result)); setResponseError(''); - cache.add(queryFormData); + cache.set(queryFormData, json.result); if (queryForce && actions) { actions.setForceQuery(false); }