I absolutely love this article by Sarah Drasner about replacing jQuery with Vue.js. We need more articles like this. “Here’s how to replace the once-new hotness with the new hotness.”
I’ve been neck-deep in React-land for a while, and I’m trying to think of how this article would look like for React. I’d imagine doing a toggle would look something like:
- Burn all of your markup down to the ground and replace what you had with
<div id="app" />
- Rewrite your markup as JSX. Be sure to replace
class
withclassName
or the whole thing will blow up. - Inline an
onClick
attribute attached to your JSX that maps to a function to handle the click. - Write an event handler to handle the click. Be sure to call
constructor(props) { super(props); }
before you do anything. Addthis.handleClick = this.handleClick.bind(this);
to the constructor in order to get things to work.
It may just be me, but this feels comparatively way more complicated and inelegant.
I’m just gonna throw this bomb here:
React is the new jQuery
There you go.
— Sara Soueidan (@SaraSoueidan) May 24, 2018
Sara’s talking about React’s ubiquity rather than its conventions. Because migrating from something like jQuery to React is not a lateral move. It requires a major overhaul of how the entire thing is built.
If you tear out something like jQuery, you’re going to have to figure out a way to get those accordions to expand and collapse again. If you tear out React, you get a blank page. React is a big commitment. I guess that’s why I’m still struggling to comprehend why so many organizations are so eager to take the sturdy, foundational layer of the frontend stack and rewrite it all in a proprietary format. That’s all necessary to get reactive components? Projects like Vue are showing that’s not necessary.
I’m really just thinking out loud here as I continue to slog my way through React, continue to get my head around what other frameworks provide, and continue to try my damnedest to keep up with this ever-shifting web design landscape.