Skip to content
Permalink
Browse files

[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
  • Loading branch information...
threepointone authored and trueadm committed Jul 3, 2019
1 parent a98cd03 commit 65690f90ba13181ff9e846eacbb0938eda468010
@@ -37,6 +37,21 @@ it("doesn't warn when you use the right act + renderer: test", () => {
});
});

it('resets correctly across renderers', () => {
function Effecty() {
React.useEffect(() => {}, []);
return null;
}
TestUtils.act(() => {
TestRenderer.act(() => {});
expect(() => {
TestRenderer.create(<Effecty />);
}).toWarnDev(["It looks like you're using the wrong act()"], {
withoutStack: true,
});
});
});

it('warns when using createRoot() + .render', () => {
const root = ReactDOM.unstable_createRoot(document.createElement('div'));
expect(() => {
@@ -91,7 +91,7 @@ function act(callback: () => Thenable) {
actingUpdatesScopeDepth++;
if (__DEV__) {
previousIsSomeRendererActing = IsSomeRendererActing.current;
previousIsThisRendererActing = IsSomeRendererActing.current;
previousIsThisRendererActing = IsThisRendererActing.current;
IsSomeRendererActing.current = true;
IsThisRendererActing.current = true;
}
@@ -620,7 +620,7 @@ function createReactNoop(reconciler: Function, useMutation: boolean) {
actingUpdatesScopeDepth++;
if (__DEV__) {
previousIsSomeRendererActing = IsSomeRendererActing.current;
previousIsThisRendererActing = IsSomeRendererActing.current;
previousIsThisRendererActing = IsThisRendererActing.current;
IsSomeRendererActing.current = true;
IsThisRendererActing.current = true;
}
@@ -2454,10 +2454,7 @@ export function warnIfNotCurrentlyActingEffectsInDEV(fiber: Fiber): void {
if (__DEV__) {
if (
warnsIfNotActing === true &&
(fiber.mode & StrictMode ||
fiber.mode & ProfileMode ||
fiber.mode & BatchedMode ||
fiber.mode & ConcurrentMode) &&
(fiber.mode & StrictMode) !== NoMode &&
IsSomeRendererActing.current === false &&
IsThisRendererActing.current === false
) {
@@ -72,7 +72,7 @@ function act(callback: () => Thenable) {
actingUpdatesScopeDepth++;
if (__DEV__) {
previousIsSomeRendererActing = IsSomeRendererActing.current;
previousIsThisRendererActing = IsSomeRendererActing.current;
previousIsThisRendererActing = IsThisRendererActing.current;
IsSomeRendererActing.current = true;
IsThisRendererActing.current = true;
}

0 comments on commit 65690f9

Please sign in to comment.
You can’t perform that action at this time.