pancake-frontend icon indicating copy to clipboard operation
pancake-frontend copied to clipboard

perf: Use callback for handlers

Open memoyil opened this issue 7 months ago • 2 comments


PR-Codex overview

This PR updates various components and hooks to use useCallback and useMemo for performance optimization.

Detailed summary

  • Updated functions to use useCallback and useMemo for better performance.
  • Replaced inline functions with memoized callbacks in multiple components.
  • Improved efficiency by optimizing function calls in different parts of the codebase.

The following files were skipped due to too many changes: packages/uikit/src/components/MultiSelect/MultiSelect.tsx, apps/web/src/views/Predictions/components/Notification/PauseNotification.tsx, apps/games/components/Footer.tsx, apps/web/src/views/Swap/MMLinkPools/components/MMCommitButton.tsx, apps/web/src/views/Swap/hooks/useWarningImport.tsx, apps/web/src/views/Predictions/components/Notification/ErrorNotification.tsx, apps/web/src/views/Farms/components/FarmTable/Actions/StakedAction.tsx, apps/web/src/components/AddressInputSelect/index.tsx, apps/web/src/views/TradingCompetition/components/RegisterModal/ReactivateProfile.tsx, apps/web/src/components/Menu/UserMenu/WalletTransactions.tsx, apps/web/src/views/Pottery/index.tsx, apps/web/src/views/Nft/market/Collection/Traits/PancakeBunniesTraits.tsx, apps/web/src/views/PancakeSquad/components/Modals/Confirm/index.tsx, apps/web/src/views/Predictions/components/ChainlinkChartDisclaimer.tsx, apps/web/src/views/Home/components/UserBanner/UserDetail.tsx, apps/web/src/components/CrossChainVeCakeModal/components/SwitchToBnbCahinModal.tsx, apps/web/src/components/TransactionDetailModal/index.tsx, apps/web/src/views/Voting/CreateProposal/Choices.tsx, apps/web/src/views/Farms/components/FarmCard/StakeAction.tsx, apps/web/src/views/Ifos/components/IfoVesting/VestingPeriod/TokenInfo.tsx, apps/web/src/views/TradingCompetition/components/RegisterModal/MakeProfile.tsx, apps/web/src/views/TradingCompetition/useRegistrationClaimStatus.ts, apps/web/src/views/LimitOrders/components/CurrencyInputHeader.tsx, apps/web/src/views/Ifos/components/Hero.tsx, apps/aptos/components/Menu/Menu.tsx, packages/uikit/src/components/ThemeSwitcher/ThemeSwitcher.tsx, apps/web/src/views/Ifos/components/IfoVesting/VestingPeriod/Expand.tsx, apps/web/src/views/Nft/market/Collection/Items/ClearAllButton.tsx, apps/web/src/views/Migration/components/v3/OldFarmRow.tsx, packages/uikit/src/hooks/useDialog/DialogContext.tsx, apps/web/src/views/FarmAuction/hooks/useReclaimAuctionBid.ts, apps/web/src/views/GaugesVoting/components/Table/VoteTable/List.tsx, apps/web/src/views/Voting/Proposal/Votes.tsx, apps/web/src/views/Nft/market/ActivityHistory/ClearAllButton.tsx, apps/web/src/views/Predictions/components/RoundCard/CanceledRoundCard.tsx, apps/web/src/views/LimitOrders/components/LimitOrderPrice.tsx, apps/web/src/views/Predictions/components/History/RoundsTab.tsx, apps/web/src/components/CrossChainVeCakeModal/components/NextButton.tsx, apps/web/src/views/Predictions/Leaderboard/components/WalletStatsModal.tsx, apps/aptos/components/WrongNetworkModal.tsx, apps/web/src/views/AffiliatesProgram/components/Dashboard/LoginButton.tsx, apps/web/src/views/TradingReward/components/YourTradingReward/VeCake/VeCakePreview.tsx, apps/web/src/views/LimitOrders/components/ConfirmLimitOrderModal.tsx, apps/web/src/components/PhishingWarningBanner/index.tsx, apps/web/src/views/Predictions/components/RoundCard/SetPositionCard.tsx, apps/web/src/views/AffiliatesProgram/components/OnBoardingModal/index.tsx, apps/web/src/views/Voting/Proposal/Vote.tsx, apps/web/src/views/TradingCompetition/components/ShareImageModal.tsx, packages/uikit/src/components/TokenLogo/TokenLogo.tsx, apps/web/src/views/Predictions/Leaderboard/components/Results/index.tsx, apps/web/src/views/Predictions/components/v1/NothingToClaimModal.tsx, packages/uikit/src/widgets/Modal/BottomDrawer/BottomDrawer.tsx, packages/uikit/src/components/Acknowledgement/index.tsx, apps/web/src/components/GlobalCheckClaimStatus/AnniversaryAchievementModal.tsx, apps/web/src/views/Pottery/components/WinRateModal/index.tsx, apps/web/src/components/ConnectWalletButton.tsx, apps/web/src/components/CrossChainVeCakeModal/components/SyncButton.tsx, packages/uikit/src/widgets/Modal/ModalV2.tsx, apps/web/src/components/ImportTokenWarningModal.tsx, apps/web/src/views/Farms/components/FarmCard/V3/SingleFarmV3Card.tsx, apps/web/src/hooks/useCakeApprove.tsx, apps/web/src/views/Predictions/components/CollectWinningsPopup.tsx, packages/uikit/src/widgets/Modal/Modal.tsx, apps/web/src/views/TradingReward/components/YourTradingReward/VeCake/VeCakeAddCakeOrWeeksModal.tsx, apps/web/src/views/Migration/components/bCake/PMRow.tsx, apps/web/src/views/GaugesVoting/components/GaugesFilter/FilterFieldByType.tsx, apps/web/src/components/ClaimNftModal/ClaimNftModal.tsx, packages/uikit/src/components/CoinSwitcher/CoinSwitcher.tsx, apps/web/src/views/Predictions/components/RoundCard/AIPredictions/AISetPositionCard.tsx, apps/web/src/views/TradingReward/components/YourTradingReward/VeCake/VeCakePreviewTextInfo.tsx, apps/web/src/views/Predictions/components/v1/V1ClaimCheck.tsx, apps/web/src/views/Nft/market/components/BuySellModals/BuyModal/index.tsx, apps/web/src/views/Predictions/components/History/HistoricalBet.tsx, apps/web/src/views/Farms/components/YieldBooster/components/BCakeCalculator.tsx, apps/web/src/views/Predictions/components/PrevNextNav.tsx, apps/web/src/views/Profile/components/EditProfileModal/PauseProfileView.tsx, apps/web/src/views/FixedStaking/components/RestakeFixedStakingModal.tsx, apps/web/src/views/TradingCompetition/components/RegisterModal/RegisterWithProfile.tsx, apps/web/src/views/GaugesVoting/components/Table/GaugesTable/TableHeader.tsx, apps/web/src/views/Migration/bCake.tsx, apps/web/src/views/Ifos/components/IfoFoldableCard/IfoPoolCard/ClaimButton.tsx, apps/web/src/views/Profile/components/EditProfileModal/ApproveCakeView.tsx, apps/web/src/views/Nft/market/ActivityHistory/ActivityFilter.tsx, apps/web/src/views/PancakeSquad/components/Buttons/BuyTickets.tsx, apps/web/src/views/Ifos/components/IfoFoldableCard/index.tsx, apps/web/src/views/Predictions/components/History/BetResult.tsx, apps/aptos/components/Farms/components/FarmCard/HarvestAction.tsx, apps/web/src/views/TradingCompetition/components/ClaimModal/index.tsx, apps/web/src/views/Predictions/components/History/AIPredictions/AIBetResult.tsx, apps/web/src/views/Pottery/components/Pot/Deposit/DepositAction.tsx, apps/web/src/views/Farms/components/BCakeMigrateModal.tsx, apps/web/src/views/Predictions/components/History/Header.tsx, apps/web/src/views/Pools/components/PoolsTable/ActionPanel/Stake.tsx, apps/web/src/views/Profile/components/Achievements/AchievementRow/index.tsx, apps/web/src/components/AccessRisk/index.tsx, apps/web/src/views/AffiliatesProgram/components/Dashboard/MyReferralLink.tsx, apps/web/src/views/Farms/components/YieldBooster/components/bCakeV3/BCakeBoosterCard.tsx, apps/web/src/views/Predictions/components/ReclaimPositionButton.tsx, apps/web/src/views/Predictions/components/CollectRoundWinningsModal.tsx, apps/web/src/views/Swap/MMLinkPools/hooks/useApprove.ts, apps/web/src/views/Predictions/components/TokenSelector/index.tsx, apps/web/src/views/Migration/v3.tsx, apps/web/src/components/CrossChainVeCakeModal/index.tsx, apps/web/src/views/Farms/components/UpdatePositionsReminder.tsx, apps/web/src/views/Farms/components/MultiChainHarvestModal.tsx, apps/web/src/views/CakeStaking/index.tsx, apps/web/src/views/PancakeSquad/components/Buttons/Mint.tsx, apps/web/src/views/Predictions/Desktop.tsx, apps/web/src/views/Migration/components/v3/Step2.tsx, apps/web/src/views/Nft/market/components/Filters/MinMaxFilter/index.tsx, apps/web/src/views/Farms/components/FarmCard/HarvestAction.tsx, apps/web/src/views/ProfileCreation/ProfilePicture.tsx, apps/web/src/views/Predictions/Leaderboard/components/Filters/index.tsx, packages/uikit/src/components/SubMenuItems/SubMenuItems.tsx, apps/web/src/components/Menu/UserMenu/WalletInfo.tsx, apps/aptos/hooks/useAuth.ts, apps/web/src/views/ProfileCreation/UserName.tsx, packages/uikit/src/components/RoiCalculatorModal/RoiCard.tsx, apps/web/src/views/Swap/components/AdvancedSwapDetails.tsx, apps/web/src/views/Nft/market/components/BuySellModals/SellModal/index.tsx, apps/web/src/views/Pottery/components/WinRateModal/WinRateCard.tsx, packages/uikit/src/widgets/Menu/components/UserMenu/index.tsx, apps/web/src/views/Nft/market/Collection/IndividualNFTPage/shared/MoreFromThisCollection.tsx, packages/uikit/src/hooks/useDialog/Dialog.tsx, apps/web/src/views/Predictions/components/RoundCard/OpenRoundCard.tsx, apps/web/src/views/Voting/components/CastVoteModal/index.tsx, apps/web/src/views/Nft/market/components/Filters/ListTraitFilter/index.tsx, apps/web/src/views/Predictions/components/RoundCard/AIPredictions/AIOpenRoundCard.tsx, apps/web/src/views/Nft/market/components/Filters/ListCollectionFilter/index.tsx, apps/web/src/views/Farms/components/FarmTable/Actions/HarvestAction.tsx, packages/uikit/src/components/RoiCalculatorModal/useRoiCalculatorReducer.ts, apps/web/src/components/GlobalCheckClaimStatus/V3AirdropModal.tsx, apps/web/src/views/Pottery/hooks/useWinRateCalculator.tsx, apps/web/src/views/Pools/components/CakeVaultCard/VaultStakeModal.tsx, apps/web/src/views/Lottery/components/ClaimPrizesModal/ClaimPrizesInner.tsx, apps/web/src/views/Lottery/components/BuyTicketsModal/TicketInput.tsx

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

memoyil avatar Jun 29 '24 10:06 memoyil