From 2964dea1e21bc9add0b98ff42bacf2f2cd2ee406 Mon Sep 17 00:00:00 2001 From: Bowen Tan Date: Wed, 12 Jan 2022 10:43:24 +0800 Subject: [PATCH] fix component slot will not update after property change bug --- .../runtime/src/components/_internal/ImplWrapper.tsx | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/runtime/src/components/_internal/ImplWrapper.tsx b/packages/runtime/src/components/_internal/ImplWrapper.tsx index c2e33dbb..45cb869b 100644 --- a/packages/runtime/src/components/_internal/ImplWrapper.tsx +++ b/packages/runtime/src/components/_internal/ImplWrapper.tsx @@ -2,10 +2,7 @@ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { merge } from 'lodash-es'; import { RuntimeComponentSchema, RuntimeTraitSchema } from '@sunmao-ui/core'; import { watch } from '../../utils/watchReactivity'; -import { - ImplWrapperProps, - TraitResult, -} from '../../types'; +import { ImplWrapperProps, TraitResult } from '../../types'; import { shallowCompareArray } from '../../utils/shallowCompareArray'; const _ImplWrapper = React.forwardRef((props, ref) => { @@ -227,12 +224,13 @@ export const ImplWrapper = React.memo( (prevProps, nextProps) => { const prevChildren = prevProps.childrenMap[prevProps.component.id]?._grandChildren; const nextChildren = nextProps.childrenMap[nextProps.component.id]?._grandChildren; - if (!prevChildren || !nextProps) return false; + const prevComponent = prevProps.component; + const nextComponent = nextProps.component; let isEqual = false; if (prevChildren && nextChildren) { isEqual = shallowCompareArray(prevChildren, nextChildren); } - return isEqual; + return isEqual && prevComponent === nextComponent; } );