Skip to content

Commit 65690f9

Browse files
threepointonetrueadm
authored andcommitted
[fail] reset IsThisRendererActing correctly (facebook#16042)
* [fail] reset IsThisRendererActing correctly I missed this in facebook#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
1 parent a98cd03 commit 65690f9

File tree

5 files changed

+19
-7
lines changed

5 files changed

+19
-7
lines changed

fixtures/dom/src/index.test.js

+15
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,21 @@ it("doesn't warn when you use the right act + renderer: test", () => {
3737
});
3838
});
3939

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+
4055
it('warns when using createRoot() + .render', () => {
4156
const root = ReactDOM.unstable_createRoot(document.createElement('div'));
4257
expect(() => {

packages/react-dom/src/test-utils/ReactTestUtilsAct.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ function act(callback: () => Thenable) {
9191
actingUpdatesScopeDepth++;
9292
if (__DEV__) {
9393
previousIsSomeRendererActing = IsSomeRendererActing.current;
94-
previousIsThisRendererActing = IsSomeRendererActing.current;
94+
previousIsThisRendererActing = IsThisRendererActing.current;
9595
IsSomeRendererActing.current = true;
9696
IsThisRendererActing.current = true;
9797
}

packages/react-noop-renderer/src/createReactNoop.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -620,7 +620,7 @@ function createReactNoop(reconciler: Function, useMutation: boolean) {
620620
actingUpdatesScopeDepth++;
621621
if (__DEV__) {
622622
previousIsSomeRendererActing = IsSomeRendererActing.current;
623-
previousIsThisRendererActing = IsSomeRendererActing.current;
623+
previousIsThisRendererActing = IsThisRendererActing.current;
624624
IsSomeRendererActing.current = true;
625625
IsThisRendererActing.current = true;
626626
}

packages/react-reconciler/src/ReactFiberWorkLoop.js

+1-4
Original file line numberDiff line numberDiff line change
@@ -2454,10 +2454,7 @@ export function warnIfNotCurrentlyActingEffectsInDEV(fiber: Fiber): void {
24542454
if (__DEV__) {
24552455
if (
24562456
warnsIfNotActing === true &&
2457-
(fiber.mode & StrictMode ||
2458-
fiber.mode & ProfileMode ||
2459-
fiber.mode & BatchedMode ||
2460-
fiber.mode & ConcurrentMode) &&
2457+
(fiber.mode & StrictMode) !== NoMode &&
24612458
IsSomeRendererActing.current === false &&
24622459
IsThisRendererActing.current === false
24632460
) {

packages/react-test-renderer/src/ReactTestRendererAct.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ function act(callback: () => Thenable) {
7272
actingUpdatesScopeDepth++;
7373
if (__DEV__) {
7474
previousIsSomeRendererActing = IsSomeRendererActing.current;
75-
previousIsThisRendererActing = IsSomeRendererActing.current;
75+
previousIsThisRendererActing = IsThisRendererActing.current;
7676
IsSomeRendererActing.current = true;
7777
IsThisRendererActing.current = true;
7878
}

0 commit comments

Comments
 (0)