Skip to content

Refactor: Convert publish components to function components#73992

Closed
nextdimension wants to merge 1 commit into
WordPress:trunkfrom
nextdimension:refactor/editor-publish-to-functions
Closed

Refactor: Convert publish components to function components#73992
nextdimension wants to merge 1 commit into
WordPress:trunkfrom
nextdimension:refactor/editor-publish-to-functions

Conversation

@nextdimension
Copy link
Copy Markdown

What?

Contributes to #22890

Convert publish-related components from class components to function components.

Why?

This PR contributes to the ongoing effort to modernize the Gutenberg codebase by converting React class components to function components with hooks, as tracked in #22890.

These components are part of the core publishing flow, and modernizing them aligns with React best practices.

How?

  • Replace class extends Component with function components
  • Replace this.state with useState hook
  • Replace lifecycle methods (componentDidMount, componentDidUpdate, componentWillUnmount) with useEffect hooks
  • Replace createRef with useRef hook
  • Update this.props references to use props parameter

Files changed:

  • packages/editor/src/components/post-publish-button/index.js
  • packages/editor/src/components/post-publish-panel/index.js
  • packages/editor/src/hooks/media-upload.js

Testing Instructions

  1. Run the editor publish tests:
    npm run test:unit -- --testPathPattern="packages/editor/src/components/post-publish"
    
  2. Start the development environment:
    npm run dev
    
  3. Create a new post with some content
  4. Click the Publish button in the top bar
  5. Verify the publish panel opens correctly
  6. Complete the publish flow
  7. Verify the post is published successfully
  8. Edit the published post and verify the Update button works

Testing Instructions for Keyboard

  1. Create a new post
  2. Tab to the Publish button
  3. Press Enter to open the publish panel
  4. Tab through the publish panel options
  5. Press Enter on the Publish button to publish
  6. Verify focus management after publishing

Screenshots or screencast

N/A - No visual changes, only internal refactoring.

@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.

Unlinked Accounts

The following contributors have not linked their GitHub and WordPress.org accounts: @[email protected].

Contributors, please read how to link your accounts to ensure your work is properly credited in WordPress releases.

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

Unlinked contributors: [email protected].


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

@github-actions
Copy link
Copy Markdown

👋 Thanks for your first Pull Request and for helping build the future of Gutenberg and WordPress, @nextdimension! 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.

@github-actions github-actions Bot added the First-time Contributor Pull request opened by a first-time contributor to Gutenberg repository label Dec 13, 2025
@Mamaduka
Copy link
Copy Markdown
Member

Mamaduka commented Jun 1, 2026

Closing in favor of alt PR; differences are described there: #78737.

@Mamaduka Mamaduka closed this Jun 1, 2026
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants