-
Notifications
You must be signed in to change notification settings - Fork 47.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat[devtools]: display Forget badge for the relevant components (#27709
) Adds `Forget` badge to all relevant components. Changes: - If component is compiled with Forget and using a built-in `useMemoCache` hook, it will have a `Forget` badge next to its display name in: - components tree - inspected element view - owners list - Such badges are indexable, so Forget components can be searched using search bar. Fixes: - Displaying the badges for owners list inside the inspected component view Implementation: - React DevTools backend is responsible for identifying if component is compiled with Forget, based on `fiber.updateQueue.memoCache`. It will wrap component's display name with `Forget(...)` prefix before passing operations to the frontend. On the frontend side, we will parse the display name and strip Forget prefix, marking the corresponding element by setting `compiledWithForget` field. Almost the same logic is currently used for HOC display names.
- Loading branch information
Showing
29 changed files
with
428 additions
and
225 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -65,7 +65,7 @@ | |
color: var(--color-expand-collapse-toggle); | ||
} | ||
|
||
.Badge { | ||
.BadgesBlock { | ||
margin-left: 0.25rem; | ||
} | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
14 changes: 14 additions & 0 deletions
14
packages/react-devtools-shared/src/devtools/views/Components/ElementBadges.css
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
.Root { | ||
display: inline-flex; | ||
align-items: center; | ||
} | ||
|
||
.Root *:not(:first-child) { | ||
margin-left: 0.25rem; | ||
} | ||
|
||
.ExtraLabel { | ||
font-family: var(--font-family-monospace); | ||
font-size: var(--font-size-monospace-small); | ||
color: var(--color-component-badge-count); | ||
} |
48 changes: 48 additions & 0 deletions
48
packages/react-devtools-shared/src/devtools/views/Components/ElementBadges.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
/** | ||
* Copyright (c) Meta Platforms, Inc. and affiliates. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
* | ||
* @flow | ||
*/ | ||
|
||
import * as React from 'react'; | ||
|
||
import Badge from './Badge'; | ||
import ForgetBadge from './ForgetBadge'; | ||
|
||
import styles from './ElementBadges.css'; | ||
|
||
type Props = { | ||
hocDisplayNames: Array<string> | null, | ||
compiledWithForget: boolean, | ||
className?: string, | ||
}; | ||
|
||
export default function ElementBadges({ | ||
compiledWithForget, | ||
hocDisplayNames, | ||
className = '', | ||
}: Props): React.Node { | ||
if ( | ||
!compiledWithForget && | ||
(hocDisplayNames == null || hocDisplayNames.length === 0) | ||
) { | ||
return null; | ||
} | ||
|
||
return ( | ||
<div className={`${styles.Root} ${className}`}> | ||
{compiledWithForget && <ForgetBadge indexable={false} />} | ||
|
||
{hocDisplayNames != null && hocDisplayNames.length > 0 && ( | ||
<Badge>{hocDisplayNames[0]}</Badge> | ||
)} | ||
|
||
{hocDisplayNames != null && hocDisplayNames.length > 1 && ( | ||
<div className={styles.ExtraLabel}>+{hocDisplayNames.length - 1}</div> | ||
)} | ||
</div> | ||
); | ||
} |
3 changes: 3 additions & 0 deletions
3
packages/react-devtools-shared/src/devtools/views/Components/ForgetBadge.css
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
.Root { | ||
background-color: var(--color-forget-badge); | ||
} |
Oops, something went wrong.