-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
fix: prevent PanelStack2 from opening in the wrong direction #6847
fix: prevent PanelStack2 from opening in the wrong direction #6847
Conversation
Thanks for your interest in palantir/blueprint, @stropitek! Before we can accept your pull request, you need to sign our contributor license agreement - just visit https://cla.palantir.com/ and follow the instructions. Once you sign, I'll automatically update this pull request. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for the fix! Agreed regarding deriving from props/previous props rather than stored as separate state.
Feel free to merge as is and I can open a cleanup PR since my comments aren't needed for the fix, otherwise I can re-approve if you push changes.
Invalidated by push of 0b4d5cb
0b4d5cb
to
cbf3061
Compare
Thank you for the review @evansjohnson! I updated the PR based on it. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
} | ||
stackLength.current = stack.length; | ||
}, [stack]); | ||
const prevStackLength = usePrevious(stack.length) ?? stack.length; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
leaving comment for posterity - technically stack.length
is not the previous stack length, but it lets us not worry about handling the undefined
case, and there is no animation on the initial render anyways
Fixes #6723
As additional context that was not described in the original issue, I realized that the problem only exists when using react 18, not with react 16.
I did an example of the issue in an application running with react 18 in stackblitz, one without the fix, the other with the fix. By testing the example as described in #6723, you can verify the fix.
Before the fix: https://stackblitz.com/edit/vitejs-vite-4d5jhz
After the fix: https://stackblitz.com/edit/vitejs-vite-txizds
Checklist
Changes proposed in this pull request:
The changes removes one of the state that can be derived from other values directly, preventing unnecessary re-renders.
Reviewers should focus on:
Making sure the change does not break any existing behaviour.