Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set current fiber during before-mutation traversal #13219

Merged
merged 1 commit into from Jul 17, 2018
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
9 changes: 8 additions & 1 deletion packages/react-reconciler/src/ReactFiberScheduler.js
Expand Up @@ -428,8 +428,11 @@ function commitAllHostEffects() {

function commitBeforeMutationLifecycles() {
while (nextEffect !== null) {
const effectTag = nextEffect.effectTag;
if (__DEV__) {
ReactCurrentFiber.setCurrentFiber(nextEffect);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you mean to put this inside of the while loop? I assume you meant to put it before?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, I meant to put it outside (just like we do in other effect traversal). It doesn't really give us anything to reset it on every iteration if we're going to set it again at the very beginning of every iteration.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually sorry, I misunderstood your question (I thought you meant a different line).

But here, too, it was intentional, to match what we do in the other effect traversal. I put it inside the loop because I want to set the current fiber to the current effect as we iterate through effects. Putting it outside would defeat the purpose. Each effect is a different fiber.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

D'oh yeah, I must have misread this previously.


const effectTag = nextEffect.effectTag;
if (effectTag & Snapshot) {
recordEffect();
const current = nextEffect.alternate;
Expand All @@ -440,6 +443,10 @@ function commitBeforeMutationLifecycles() {
// This will be done by commitAllLifeCycles()
nextEffect = nextEffect.nextEffect;
}

if (__DEV__) {
ReactCurrentFiber.resetCurrentFiber();
}
}

function commitAllLifeCycles(
Expand Down