Fix suspenseCallback type warning, add a test (#16194)
Benoit Girard committed
Jul 24, 2019 at 10:32 UTC
144dba1a114f2d8b491186639aa38ece82eaef26
2 files changed
+27
-1
packages/react-reconciler/src/ReactFiberCommitWork.js
+3
-1
@@ -1330,7 +1330,9 @@ function commitSuspenseComponent(finishedWork: Fiber) {
1330
suspenseCallback(new Set(thenables));
1331
}
1332
} else if (__DEV__) {
1333
- warning(false, 'Unexpected type for suspenseCallback.');
1333
+ if (suspenseCallback !== undefined) {
1334
+ warning(false, 'Unexpected type for suspenseCallback.');
1335
+ }
1336
}
1337
}
1338
}
packages/react-reconciler/src/__tests__/ReactSuspenseCallback-test.internal.js
+24
@@ -50,6 +50,30 @@ describe('ReactSuspense', () => {
50
return {promise, resolveRef, PromiseComp};
51
}
52
53
+ it('check type', () => {
54
+ const {PromiseComp} = createThenable();
55
+
56
+ const elementBadType = (
57
+ <React.Suspense suspenseCallback={1} fallback={'Waiting'}>
58
+ <PromiseComp />
59
+ </React.Suspense>
60
+ );
61
+
62
+ ReactNoop.render(elementBadType);
63
+ expect(() => Scheduler.unstable_flushAll()).toWarnDev([
64
+ 'Warning: Unexpected type for suspenseCallback.',
65
+ ]);
66
+
67
+ const elementMissingCallback = (
68
+ <React.Suspense fallback={'Waiting'}>
69
+ <PromiseComp />
70
+ </React.Suspense>
71
+ );
72
+
73
+ ReactNoop.render(elementMissingCallback);
74
+ expect(() => Scheduler.unstable_flushAll()).toWarnDev([]);
75
+ });
76
+
77
it('1 then 0 suspense callback', () => {
78
const {promise, resolveRef, PromiseComp} = createThenable();
79