DEV Community

Play Button Pause Button
Nick Taylor for The DEV Team

Posted on • Updated on • Originally published at

Converting a Preact Component to use hooks with Sophia Li

A few weeks ago, I wrote a post asking DEV community members if they wanted to potentially pair program with me during a live coding session.

A lot of interest was generated and so we did our first live coding pairing session that was streamed on It was with DEV community member Sophia Li.

She worked on the <ImageUploader /> Preact component in the DEV/forem codebase. It was originally a class component that she converted to a function component using the useState hook.

For the full recording of the pairing session check out the YouTube video below. Also, feel free to subscribe to my channel. πŸ˜‰

Near the end of the pairing session we discussed the possibility of using the useReducer hook instead. After the pairing session, Sophia continued working on the PR she created and implemented the necessary changes to use the useReducer hook.

For those interested, here is the merged PR.

Update `<ImageUploader />` class component to use hooks #9369

What type of PR is this? (check all applicable)

  • [x] Refactor
  • [ ] Feature
  • [ ] Bug Fix
  • [ ] Optimization
  • [ ] Documentation Update


This PR refactors the <ImageUploader /> class component to a function component using the useReducer hook.

Related Tickets & Documents


QA Instructions, Screenshots, Recordings

Screen Shot 2020-07-25 at 4 10 02 PM

No new features were added, so we did not add new tests. All previous tests pass. The component works the same as before.

Added tests?

  • [ ] yes
  • [x] no, because they aren't needed
  • [ ] no, because I need help

Added to documentation?

  • [ ]
  • [ ] readme
  • [x] no documentation needed

[optional] Are there any post deployment tasks we need to perform?


[optional] What gif best describes this PR or how it makes you feel?

excited woman dancing and celebrating

It was awesome pairing with Sophia and by the way, she’s looking for her next role!

Looking forward to the next pairing session!

Top comments (2)

ridhwana profile image
Ridhwana Khan

I read through the code earlier today, nice work @sophia_wyl and @nickytonline ! Using the useReducer hook was a really great addition 😍

waylonwalker profile image
Waylon Walker • Edited

I like the short pre-roll video cover image, I am thinking about doing these for some of my posts.