diff --git a/packages/react-reconciler/src/beginWork.ts b/packages/react-reconciler/src/beginWork.ts index 71b3201..a333f0c 100644 --- a/packages/react-reconciler/src/beginWork.ts +++ b/packages/react-reconciler/src/beginWork.ts @@ -140,8 +140,9 @@ function updateMemoComponent(wip: FiberNode, renderLane: Lane) { // state context if (!checkScheduledUpdateOrContext(current, renderLane)) { - // 浅比较props - if (shallowEqual(prevProps, nextProps) && current.ref === wip.ref) { + const compare = + wip.type.compare !== null ? wip.type.compare : shallowEqual; + if (compare(prevProps, nextProps) && current.ref === wip.ref) { didReceiveUpdate = false; wip.pendingProps = prevProps;