[fail] reset IsThisRendererActing correctly (#16042)
* [fail] reset IsThisRendererActing correctly I missed this in https://github.com/facebook/react/pull/16039. I'd pointed at the wrong previous state, corrupting it in further use. This PR fixes that, and adds a test to make sure it doesn't happen again. * warn for unacted effects only in strict mode
Sunil Pai committed
Jul 3, 2019 at 03:04 UTC
b8f91e6649ccbd9e3bcb6b5907bb20e411ee2074
5 files changed
+19
-7
fixtures/dom/src/index.test.js
+15
@@ -37,6 +37,21 @@ it("doesn't warn when you use the right act + renderer: test", () => {
37
});
38
});
39
40
+it('resets correctly across renderers', () => {
41
+ function Effecty() {
42
+ React.useEffect(() => {}, []);
43
+ return null;
44
+ }
45
+ TestUtils.act(() => {
46
+ TestRenderer.act(() => {});
47
+ expect(() => {
48
+ TestRenderer.create(<Effecty />);
49
+ }).toWarnDev(["It looks like you're using the wrong act()"], {
50
+ withoutStack: true,
51
+ });
52
+ });
53
+});
54
+
55
it('warns when using createRoot() + .render', () => {
56
const root = ReactDOM.unstable_createRoot(document.createElement('div'));
57
expect(() => {
packages/react-dom/src/test-utils/ReactTestUtilsAct.js
+1
-1
@@ -91,7 +91,7 @@ function act(callback: () => Thenable) {
91
actingUpdatesScopeDepth++;
92
if (__DEV__) {
93
previousIsSomeRendererActing = IsSomeRendererActing.current;
94
- previousIsThisRendererActing = IsSomeRendererActing.current;
94
+ previousIsThisRendererActing = IsThisRendererActing.current;
95
IsSomeRendererActing.current = true;
96
IsThisRendererActing.current = true;
97
}
packages/react-noop-renderer/src/createReactNoop.js
+1
-1
@@ -620,7 +620,7 @@ function createReactNoop(reconciler: Function, useMutation: boolean) {
620
actingUpdatesScopeDepth++;
621
if (__DEV__) {
622
previousIsSomeRendererActing = IsSomeRendererActing.current;
623
- previousIsThisRendererActing = IsSomeRendererActing.current;
623
+ previousIsThisRendererActing = IsThisRendererActing.current;
624
IsSomeRendererActing.current = true;
625
IsThisRendererActing.current = true;
626
}
packages/react-reconciler/src/ReactFiberWorkLoop.js
+1
-4
@@ -2454,10 +2454,7 @@ export function warnIfNotCurrentlyActingEffectsInDEV(fiber: Fiber): void {
2454
if (__DEV__) {
2455
if (
2456
warnsIfNotActing === true &&
2457
- (fiber.mode & StrictMode ||
2458
- fiber.mode & ProfileMode ||
2459
- fiber.mode & BatchedMode ||
2460
- fiber.mode & ConcurrentMode) &&
2457
+ (fiber.mode & StrictMode) !== NoMode &&
2458
IsSomeRendererActing.current === false &&
2459
IsThisRendererActing.current === false
2460
) {
packages/react-test-renderer/src/ReactTestRendererAct.js
+1
-1
@@ -72,7 +72,7 @@ function act(callback: () => Thenable) {
72
actingUpdatesScopeDepth++;
73
if (__DEV__) {
74
previousIsSomeRendererActing = IsSomeRendererActing.current;
75
- previousIsThisRendererActing = IsSomeRendererActing.current;
75
+ previousIsThisRendererActing = IsThisRendererActing.current;
76
IsSomeRendererActing.current = true;
77
IsThisRendererActing.current = true;
78
}