Add memo to some components (#16094)

GitOrigin-RevId: e4bea140d872ac3f8b2aca7833e658af684a1438
This commit is contained in:
Alf Eaton
2023-12-15 09:03:22 +00:00
committed by Copybot
parent 8839addbfa
commit a074054cc9
9 changed files with 23 additions and 17 deletions
@@ -3,11 +3,11 @@ import LeftMenuMask from './left-menu-mask'
import AccessibleModal from '../../../shared/components/accessible-modal'
import { Modal } from 'react-bootstrap'
import classNames from 'classnames'
import { lazy, Suspense } from 'react'
import { lazy, memo, Suspense } from 'react'
import { FullSizeLoadingSpinner } from '@/shared/components/loading-spinner'
const EditorLeftMenuBody = lazy(() => import('./editor-left-menu-body'))
export default function EditorLeftMenu() {
function EditorLeftMenu() {
const { leftMenuShown, setLeftMenuShown } = useLayoutContext()
const closeModal = () => {
@@ -36,3 +36,5 @@ export default function EditorLeftMenu() {
</>
)
}
export default memo(EditorLeftMenu)
@@ -1,4 +1,4 @@
import { FC, useState } from 'react'
import { FC, memo, useState } from 'react'
import { GenericErrorBoundaryFallback } from '@/shared/components/generic-error-boundary-fallback'
import withErrorBoundary from '@/infrastructure/error-boundary'
import IdePage from '@/features/ide-react/components/layout/ide-page'
@@ -15,4 +15,4 @@ const IdeRoot: FC = () => {
)
}
export default withErrorBoundary(IdeRoot, GenericErrorBoundaryFallback)
export default withErrorBoundary(memo(IdeRoot), GenericErrorBoundaryFallback)
@@ -1,6 +1,7 @@
import { useTranslation } from 'react-i18next'
import { Modal } from 'react-bootstrap'
import AccessibleModal from '@/shared/components/accessible-modal'
import { memo } from 'react'
export type GenericMessageModalOwnProps = {
title: string
@@ -34,4 +35,4 @@ function GenericMessageModal({
)
}
export default GenericMessageModal
export default memo(GenericMessageModal)
@@ -1,7 +1,7 @@
import { useTranslation } from 'react-i18next'
import { Modal } from 'react-bootstrap'
import AccessibleModal from '@/shared/components/accessible-modal'
import { useEffect, useState } from 'react'
import { memo, useEffect, useState } from 'react'
export type LockEditorMessageModalProps = {
delay: number // In seconds
@@ -45,4 +45,4 @@ function LockEditorMessageModal({ delay, show }: LockEditorMessageModalProps) {
)
}
export default LockEditorMessageModal
export default memo(LockEditorMessageModal)
@@ -1,7 +1,7 @@
import { Trans, useTranslation } from 'react-i18next'
import { Button, Modal } from 'react-bootstrap'
import AccessibleModal from '@/shared/components/accessible-modal'
import { useState } from 'react'
import { memo, useState } from 'react'
import { useLocation } from '@/shared/hooks/use-location'
export type OutOfSyncModalProps = {
@@ -78,4 +78,4 @@ function OutOfSyncModal({ editorContent, show, onHide }: OutOfSyncModalProps) {
)
}
export default OutOfSyncModal
export default memo(OutOfSyncModal)
@@ -1,4 +1,4 @@
import { useMemo } from 'react'
import { memo, useMemo } from 'react'
import Container from './container'
import Toolbar from './toolbar/toolbar'
import Nav from './nav'
@@ -151,4 +151,4 @@ function CurrentFileContainer() {
)
}
export default CurrentFileContainer
export default memo(CurrentFileContainer)
@@ -14,7 +14,7 @@ import Modal, { useBulkActionsModal } from '../entries/bulk-actions-entry/modal'
import getMeta from '../../../../../utils/meta'
import useScopeValue from '../../../../../shared/hooks/use-scope-value'
import useScopeEventListener from '@/shared/hooks/use-scope-event-listener'
import { useCallback } from 'react'
import { memo, useCallback } from 'react'
function EditorWidgets() {
const { t } = useTranslation()
@@ -109,4 +109,4 @@ function EditorWidgets() {
)
}
export default EditorWidgets
export default memo(EditorWidgets)
@@ -7,6 +7,7 @@ import OverviewFile from './overview-file'
import { useReviewPanelValueContext } from '../../context/review-panel/review-panel-context'
import { useFileTreeData } from '@/shared/context/file-tree-data-context'
import { MainDocument } from '../../../../../../types/project-settings'
import { memo } from 'react'
function OverviewContainer() {
const { isOverviewLoading } = useReviewPanelValueContext()
@@ -42,4 +43,4 @@ function OverviewContainer() {
)
}
export default OverviewContainer
export default memo(OverviewContainer)
@@ -1,4 +1,4 @@
import { FC, useCallback, useRef, useState } from 'react'
import { FC, memo, useCallback, useRef, useState } from 'react'
import * as commands from '../../extensions/toolbar/commands'
import { useTranslation } from 'react-i18next'
import useDropdown from '../../../../shared/hooks/use-dropdown'
@@ -9,7 +9,7 @@ import MaterialIcon from '../../../../shared/components/material-icon'
import classNames from 'classnames'
import { emitToolbarEvent } from '../../extensions/toolbar/utils/analytics'
export const TableInserterDropdown: FC = () => {
export const TableInserterDropdown = memo(() => {
const { t } = useTranslation()
const { open, onToggle, ref } = useDropdown()
const view = useCodeMirrorViewContext()
@@ -69,7 +69,9 @@ export const TableInserterDropdown: FC = () => {
</Overlay>
</>
)
}
})
TableInserterDropdown.displayName = 'TableInserterDropdown'
const range = (start: number, end: number) =>
Array.from({ length: end - start + 1 }, (v, k) => k + start)