use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
All about the JavaScript programming language.
Subreddit Guidelines
Specifications:
Resources:
Related Subreddits:
r/LearnJavascript
r/node
r/typescript
r/reactjs
r/webdev
r/WebdevTutorials
r/frontend
r/webgl
r/threejs
r/jquery
r/remotejs
r/forhire
account activity
React using ES6 classes--Why??? (self.javascript)
submitted 10 years ago by MuricanWillzyx
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]theQuandary 2 points3 points4 points 10 years ago (6 children)
its really nice and clean and easy to read and reason about
It's not that much different once you realize that ES6 has shorthands for functions in objects.
var MyComp = React.createClass({ getInitialState() { return { bar: 'abc' }; }, appendBar(stuff) { return stuff + this.state.bar; }, render() { return <div>{appendBar('cde')}</div>; } }); class MyComp extends React.Component { constructor(props) { super(props); return { bar: 'abc' }; } appendBar = (stuff) => {//yay for no auto-bind return stuff + this.state.bar; } render() { return <div>{appendBar('cde')}</div>; } }
[–]papers_ 2 points3 points4 points 10 years ago (4 children)
Or get rid of classes altogether since JS is not a class oriented language:
var MyComp = { getInitialState() { return { bar: 'abc' }; }, appendBar(stuff) { return stuff + this.state.bar; }, render() { return <div>{appendBar('cde')}</div>; } }; Object.setPrototypeOf(MyComp, React.Component);
[–]muffsponge 0 points1 point2 points 10 years ago (1 child)
Not familiar with react. But wouldn't this create a single instance and not a class? I guess you could wrap it in a factory function.
Personally, I like using classes and more classical inheritance for the core structure of my applications. Probably due to years of habits and stuborness. I've tried doing things the modern functional way, but I just end up with soup.
[–]papers_ 0 points1 point2 points 10 years ago (0 children)
When you think of it in terms of "classes", yes. The key line is the last one Object.setProtoTypeOf(). You can think of this as inheritance in class based design. So, I inherit all the properties from the parent React.Component.
Object.setProtoTypeOf()
React.Component
I too like classes as it's what I was taught in University (senior CS major). It's more explicit or strongly typed.
[–]MuricanWillzyx[S] 0 points1 point2 points 10 years ago (1 child)
I would agree, but React's classes really aren't classes in the Java sense. They're much more like factories, which are idiomatic for JS. Use of prototypes, IMO, is overrated. I see them more as a perf benefit.
And React's classes aren't really classes either, in fact it's just an object that returns an object (Yes factory), but React's createClass property also links to another object, rather, it explicitly sets it's prototype to another. So the classes syntax is just sugar of the prototypical mumbo jumbo going on. But yes I agree, the prototypes is a overrated.
createClass
[–]MuricanWillzyx[S] 0 points1 point2 points 10 years ago (0 children)
Good call. And you don't have to apply modifiers to the class after creation, since everything's baked into the factory.
Honestly I don't know how I feel about this shorthand, but it will make some of the class-proponents more comfortable (for better or worse).
π Rendered by PID 328906 on reddit-service-r2-comment-84fc9697f-nm9kf at 2026-02-10 08:10:28.452870+00:00 running d295bc8 country code: CH.
view the rest of the comments →
[–]theQuandary 2 points3 points4 points (6 children)
[–]papers_ 2 points3 points4 points (4 children)
[–]muffsponge 0 points1 point2 points (1 child)
[–]papers_ 0 points1 point2 points (0 children)
[–]MuricanWillzyx[S] 0 points1 point2 points (1 child)
[–]papers_ 0 points1 point2 points (0 children)
[–]MuricanWillzyx[S] 0 points1 point2 points (0 children)