diff --git a/packages/react-reconciler/src/ReactFiberCommitWork.js b/packages/react-reconciler/src/ReactFiberCommitWork.js index a16ae4fe09..6009ca50c2 100644 --- a/packages/react-reconciler/src/ReactFiberCommitWork.js +++ b/packages/react-reconciler/src/ReactFiberCommitWork.js @@ -1330,7 +1330,9 @@ function commitSuspenseComponent(finishedWork: Fiber) { suspenseCallback(new Set(thenables)); } } else if (__DEV__) { - warning(false, 'Unexpected type for suspenseCallback.'); + if (suspenseCallback !== undefined) { + warning(false, 'Unexpected type for suspenseCallback.'); + } } } } diff --git a/packages/react-reconciler/src/__tests__/ReactSuspenseCallback-test.internal.js b/packages/react-reconciler/src/__tests__/ReactSuspenseCallback-test.internal.js index 909eb878d8..8a6997107b 100644 --- a/packages/react-reconciler/src/__tests__/ReactSuspenseCallback-test.internal.js +++ b/packages/react-reconciler/src/__tests__/ReactSuspenseCallback-test.internal.js @@ -50,6 +50,30 @@ describe('ReactSuspense', () => { return {promise, resolveRef, PromiseComp}; } + it('check type', () => { + const {PromiseComp} = createThenable(); + + const elementBadType = ( + + + + ); + + ReactNoop.render(elementBadType); + expect(() => Scheduler.unstable_flushAll()).toWarnDev([ + 'Warning: Unexpected type for suspenseCallback.', + ]); + + const elementMissingCallback = ( + + + + ); + + ReactNoop.render(elementMissingCallback); + expect(() => Scheduler.unstable_flushAll()).toWarnDev([]); + }); + it('1 then 0 suspense callback', () => { const {promise, resolveRef, PromiseComp} = createThenable();