-
Notifications
You must be signed in to change notification settings - Fork 74
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(demo): BottomTabBar infinite loop #953
Conversation
Remove `ctx` dependency of effect to avoid infinite loop
📝 Walkthrough📝 WalkthroughWalkthroughThe changes involve a modification to the Changes
Suggested reviewers
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
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.
Actionable comments posted: 0
🧹 Outside diff range and nitpick comments (1)
demo/src/Components/BottomTabBar.tsx (1)
32-33
: Approve with suggestions: Address infinite loop while maintaining best practicesThe changes successfully address the infinite loop issue mentioned in the PR objectives. However, I have a few suggestions to improve the implementation:
- The comment could be more precise. Instead of mentioning
setElementProps
, it should explain whyctx
is excluded:// Exclude ctx from dependencies to avoid potential infinite loops due to frequent context updates
- Consider using
useCallback
to memoizesetElementProps
in the context provider. This would allow you to keepctx
in the dependency array without causing infinite loops:// In the context provider const setElementProps = useCallback((navigator, props) => { // Your implementation here }, [/* any dependencies */]); // Then in this component useEffect(() => { if (!navigator) { console.warn('<navigation:bottom-tab-bar> element is missing `navigator` attribute'); return; } ctx.setElementProps?.(navigator, props); }, [navigator, props, ctx]);
- If you decide to keep the current implementation, consider a more targeted ESLint disable:
// eslint-disable-next-line react-hooks/exhaustive-deps }, [navigator, props]); // ctx.setElementProps is intentionally omitted to prevent infinite loopsThese suggestions aim to balance solving the immediate issue with maintaining code quality and clarity for future maintenance.
Remove
ctx
dependency of effect to avoid infinite loopSummary by CodeRabbit
Bug Fixes
Documentation