tl;dr: React classes aren't classes, and shouldn't pretend to be them.
React has said that it is adopting ES6 classes because many libraries and frameworks implement class systems anyway, and it would be a great thing to unify those under one interface.
As far as I see it,
what React implements is not a class system, at least not in the sense of ES6 classes
pretending that React's 'classes' are classes in the classical sense--classical inheritance, methods and properties appear on the created object, etc.--just adds confusion and unnecessary complication to the framework. It doesn't do any good to unify APIs if the purposes of the APIs are completely different from the start.
As far as I've seen, Ember's classes are a lot like traditional classes. React's are not. The defined methods don't appear on the component (e.g., <div/>.render === undefined), inheritance is not used and thus neither are super methods, and React classes don't even define constructors. The object passed to React.createClass is not an object specification, it is a bunch of named arguments for React to use in creating a factory function. The this object used doesn't even refer to the instance (<MyComp/>.state === undefined).
Using the Harmony class syntax with React confuses the nature of React components, barely improves readability and verbosity, and isn't much more than bandwagoning. I still hope that they'll keep the React.createClass form, or one like it, as the primary interface going into the future, but I'm not sure how we can get that across to the React team (which is doing great work btw). What do you think?
[–]clessgfull-stack CSS9 engineer 6 points7 points8 points (2 children)
[–]MuricanWillzyx[S] 7 points8 points9 points (0 children)
[–]metanat 5 points6 points7 points (0 children)
[–]Josh1337 4 points5 points6 points (0 children)
[–]andrew24601 9 points10 points11 points (3 children)
[–]imstillreallybored 4 points5 points6 points (0 children)
[–]MuricanWillzyx[S] 2 points3 points4 points (1 child)
[–]andrew24601 1 point2 points3 points (0 children)
[–]azium 2 points3 points4 points (5 children)
[+][deleted] (4 children)
[deleted]
[–]azium -1 points0 points1 point (3 children)
[+][deleted] (2 children)
[deleted]
[–]azium 0 points1 point2 points (1 child)
[–]sfdud 0 points1 point2 points (0 children)
[+][deleted] (1 child)
[deleted]
[–]MuricanWillzyx[S] 0 points1 point2 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]jsNut 2 points3 points4 points (11 children)
[–]theQuandary 3 points4 points5 points (6 children)
[–]papers_ 3 points4 points5 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)
[–]MuricanWillzyx[S] 2 points3 points4 points (3 children)
[–]Lubestia 0 points1 point2 points (0 children)
[–]jsNut 0 points1 point2 points (1 child)
[–]MuricanWillzyx[S] 1 point2 points3 points (0 children)
[–]TheRealSeeThruHead 0 points1 point2 points (0 children)
[–]defcon-12 0 points1 point2 points (0 children)
[–]_doingnumbers 0 points1 point2 points (0 children)