Commit 4a8dbda0 authored by Zach Pomerantz's avatar Zach Pomerantz Committed by GitHub

fix: memoize nested components (#3483)

parent 0cbb24c6
...@@ -2,6 +2,7 @@ import { Trans } from '@lingui/macro' ...@@ -2,6 +2,7 @@ import { Trans } from '@lingui/macro'
import Row from 'lib/components/Row' import Row from 'lib/components/Row'
import { Logo } from 'lib/icons' import { Logo } from 'lib/icons'
import styled, { brand, ThemedText } from 'lib/theme' import styled, { brand, ThemedText } from 'lib/theme'
import { memo } from 'react'
import ExternalLink from './ExternalLink' import ExternalLink from './ExternalLink'
...@@ -24,7 +25,7 @@ const UniswapA = styled(ExternalLink)` ...@@ -24,7 +25,7 @@ const UniswapA = styled(ExternalLink)`
} }
` `
export default function BrandedFooter() { export default memo(function BrandedFooter() {
return ( return (
<Row justify="center"> <Row justify="center">
<UniswapA href={`https://uniswap.org/`}> <UniswapA href={`https://uniswap.org/`}>
...@@ -37,4 +38,4 @@ export default function BrandedFooter() { ...@@ -37,4 +38,4 @@ export default function BrandedFooter() {
</UniswapA> </UniswapA>
</Row> </Row>
) )
} })
...@@ -18,7 +18,7 @@ import { Spinner } from 'lib/icons' ...@@ -18,7 +18,7 @@ import { Spinner } from 'lib/icons'
import { displayTxHashAtom, Field } from 'lib/state/swap' import { displayTxHashAtom, Field } from 'lib/state/swap'
import { TransactionType } from 'lib/state/transactions' import { TransactionType } from 'lib/state/transactions'
import { useTheme } from 'lib/theme' import { useTheme } from 'lib/theme'
import { useCallback, useEffect, useMemo, useState } from 'react' import { memo, useCallback, useEffect, useMemo, useState } from 'react'
import invariant from 'tiny-invariant' import invariant from 'tiny-invariant'
import { ExplorerDataType } from 'utils/getExplorerLink' import { ExplorerDataType } from 'utils/getExplorerLink'
...@@ -35,7 +35,7 @@ function useIsPendingApproval(token?: Token, spender?: string): boolean { ...@@ -35,7 +35,7 @@ function useIsPendingApproval(token?: Token, spender?: string): boolean {
return Boolean(usePendingApproval(token, spender)) return Boolean(usePendingApproval(token, spender))
} }
export default function SwapButton({ disabled }: SwapButtonProps) { export default memo(function SwapButton({ disabled }: SwapButtonProps) {
const { account, chainId } = useActiveWeb3React() const { account, chainId } = useActiveWeb3React()
const { tokenColorExtraction } = useTheme() const { tokenColorExtraction } = useTheme()
...@@ -234,4 +234,4 @@ export default function SwapButton({ disabled }: SwapButtonProps) { ...@@ -234,4 +234,4 @@ export default function SwapButton({ disabled }: SwapButtonProps) {
)} )}
</> </>
) )
} })
...@@ -5,7 +5,7 @@ import useActiveWeb3React from 'lib/hooks/useActiveWeb3React' ...@@ -5,7 +5,7 @@ import useActiveWeb3React from 'lib/hooks/useActiveWeb3React'
import { largeIconCss } from 'lib/icons' import { largeIconCss } from 'lib/icons'
import { Field } from 'lib/state/swap' import { Field } from 'lib/state/swap'
import styled, { ThemedText } from 'lib/theme' import styled, { ThemedText } from 'lib/theme'
import { useMemo } from 'react' import { memo, useMemo } from 'react'
import { TradeState } from 'state/routing/types' import { TradeState } from 'state/routing/types'
import Row from '../../Row' import Row from '../../Row'
...@@ -17,7 +17,7 @@ const ToolbarRow = styled(Row)` ...@@ -17,7 +17,7 @@ const ToolbarRow = styled(Row)`
${largeIconCss} ${largeIconCss}
` `
export default function Toolbar({ disabled }: { disabled?: boolean }) { export default memo(function Toolbar({ disabled }: { disabled?: boolean }) {
const { chainId } = useActiveWeb3React() const { chainId } = useActiveWeb3React()
const { const {
trade: { trade, state }, trade: { trade, state },
...@@ -78,4 +78,4 @@ export default function Toolbar({ disabled }: { disabled?: boolean }) { ...@@ -78,4 +78,4 @@ export default function Toolbar({ disabled }: { disabled?: boolean }) {
</ThemedText.Caption> </ThemedText.Caption>
</> </>
) )
} })
...@@ -5,7 +5,7 @@ import { useCurrencyBalances } from 'lib/hooks/useCurrencyBalance' ...@@ -5,7 +5,7 @@ import { useCurrencyBalances } from 'lib/hooks/useCurrencyBalance'
import useNativeCurrency from 'lib/hooks/useNativeCurrency' import useNativeCurrency from 'lib/hooks/useNativeCurrency'
import useTokenList, { useIsTokenListLoaded, useQueryCurrencies } from 'lib/hooks/useTokenList' import useTokenList, { useIsTokenListLoaded, useQueryCurrencies } from 'lib/hooks/useTokenList'
import styled, { ThemedText } from 'lib/theme' import styled, { ThemedText } from 'lib/theme'
import { ElementRef, useCallback, useEffect, useMemo, useRef, useState } from 'react' import { ElementRef, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react'
import { currencyId } from 'utils/currencyId' import { currencyId } from 'utils/currencyId'
import Column from '../Column' import Column from '../Column'
...@@ -123,7 +123,7 @@ interface TokenSelectProps { ...@@ -123,7 +123,7 @@ interface TokenSelectProps {
onSelect: (value: Currency) => void onSelect: (value: Currency) => void
} }
export default function TokenSelect({ value, collapsed, disabled, onSelect }: TokenSelectProps) { export default memo(function TokenSelect({ value, collapsed, disabled, onSelect }: TokenSelectProps) {
usePrefetchBalances() usePrefetchBalances()
const [open, setOpen] = useState(false) const [open, setOpen] = useState(false)
...@@ -145,4 +145,4 @@ export default function TokenSelect({ value, collapsed, disabled, onSelect }: To ...@@ -145,4 +145,4 @@ export default function TokenSelect({ value, collapsed, disabled, onSelect }: To
)} )}
</> </>
) )
} })
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment