fix(explore): verified props is not updated (#31008)

This commit is contained in:
JUST.in DO IT 2024-11-21 11:05:43 -08:00 committed by GitHub
parent 90572be95a
commit 9e5b568cc9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 13 additions and 12 deletions

View File

@ -24,6 +24,7 @@ import {
import { JsonArray, JsonValue, t } from '@superset-ui/core';
import { ControlProps } from 'src/explore/components/Control';
import builtInControlComponents from 'src/explore/components/controls';
import useEffectEvent from 'src/hooks/useEffectEvent';
/**
* Full control component map.
@ -72,7 +73,7 @@ export type AsyncVerify = (
* Whether the extra props will update the original props.
*/
function hasUpdates(
props: ControlPropsWithExtras,
props: Partial<ControlPropsWithExtras>,
newProps: ExtraControlProps,
) {
return (
@ -165,17 +166,17 @@ export default function withAsyncVerification({
[basicOnChange, otherProps, verifiedProps],
);
useEffect(() => {
if (needAsyncVerification && verify) {
const verifyProps = useEffectEvent(
(verifyFunc: AsyncVerify, props: typeof otherProps) => {
if (showLoadingState) {
setIsLoading(true);
}
verify(otherProps)
verifyFunc(props)
.then(updatedProps => {
if (showLoadingState) {
setIsLoading(false);
}
if (updatedProps && hasUpdates(otherProps, updatedProps)) {
if (updatedProps && hasUpdates(verifiedProps, updatedProps)) {
setVerifiedProps({
// save isLoading in combination with other props to avoid
// rendering twice.
@ -198,14 +199,14 @@ export default function withAsyncVerification({
);
}
});
},
);
useEffect(() => {
if (needAsyncVerification && verify) {
verifyProps(verify, otherProps);
}
}, [
needAsyncVerification,
showLoadingState,
verify,
otherProps,
addWarningToast,
]);
}, [needAsyncVerification, verify, otherProps, verifyProps]);
return (
<ControlComponent