Skip to content

refactor: convert createColorHOC to functional component.#70408

Open
USERSATOSHI wants to merge 10 commits intoWordPress:trunkfrom
USERSATOSHI:try/refactor-with-color-functional-component
Open

refactor: convert createColorHOC to functional component.#70408
USERSATOSHI wants to merge 10 commits intoWordPress:trunkfrom
USERSATOSHI:try/refactor-with-color-functional-component

Conversation

@USERSATOSHI
Copy link
Copy Markdown
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
@github-actions
Copy link
Copy Markdown

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 <tusharbharti@git.wordpress.org>

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
@github-actions
Copy link
Copy Markdown

👋 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