Skip to content

refactor: convert createColorHOC to functional component. #70408

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

Open
wants to merge 9 commits into
base: trunk
Choose a base branch
from

Conversation

USERSATOSHI
Copy link
Contributor

What?

See #22890
This PR refactors createColorHOC from class based component syntax to newer functional component syntax.

Why?

Class based components are no longer the recommended approach & instead functional syntax with hooks is more recommended.
The code becomes more readable & easier to maintain.

How?

  • Converted the class-based HOC to a functional component using React hooks.
  • Used useState to manage internal derived color state.
  • Replaced getDerivedStateFromProps with a useEffect that recalculates color state when attributes or colors change.
  • Created color setter functions using useMemo to match the dynamic method generation in the original class.
  • Implemented colorUtils.getMostReadableColor with useCallback to preserve referential integrity.

Testing Instructions

  • To test this function, use Featured Post Image block which uses this internally.
  • Expect same behaviour as before

Screenshots or screencast

@USERSATOSHI USERSATOSHI requested a review from ellatrix as a code owner June 13, 2025 07:51
Copy link

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Co-authored-by: USERSATOSHI <[email protected]>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@github-actions github-actions bot added the First-time Contributor Pull request opened by a first-time contributor to Gutenberg repository label Jun 13, 2025
Copy link

👋 Thanks for your first Pull Request and for helping build the future of Gutenberg and WordPress, @USERSATOSHI! In case you missed it, we'd love to have you join us in our Slack community.

If you want to learn more about WordPress development in general, check out the Core Handbook full of helpful information.

@t-hamano t-hamano added [Type] Code Quality Issues or PRs that relate to code quality [Package] Block editor /packages/block-editor labels Jun 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
First-time Contributor Pull request opened by a first-time contributor to Gutenberg repository [Package] Block editor /packages/block-editor [Type] Code Quality Issues or PRs that relate to code quality
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants