@samitouri / QOS-React-2 / commits / b8f91e6649

[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 }