I happen to like React because it's functional representation all the way down, and I tend to like JSX in my JS vs. weird DSL in templating system in my HTML referenced with JS. But that's just me.
I can see the appeal of Vue.. and frankly, can see the appeal of Polymer as well. However, I find React feels better when I've used it.
Does "functional representation all the way down" mean that you never inherit from Component in the React apps you are building?
I've found the Functional component lifecycle events Inferno has quite interesting ( https://github.com/infernojs/inferno#functional-component-lifeycle-events ). Hopefully React will implement a similar feature some day (now that they hired the Inferno guy :) ).
Although I'm using JSX myself, I think it obscures what is happening under the hood. I don't really see what advantage it has over something like Hyperscript, besides looking a bit similar to HTML. There is an interesting Blog Post from Andre Staltz regarding JSX: http://staltz.com/some-problems-with-react-redux.html
1) What do you mean by functional representation? One of the reasons I stopped using React is that its components rely on inheritance, and I prefer functional JS.
2) You can use JSX with Vue.
I mean direct render method components... you don't have to inherit from Component or use the legacy method at all if you don't want to.
export default MyComponent(props, context) {
return <div>Hello {props.name}!</div>
}
Are you of that party that thinks that every component could (and should) be defined like that?
I'm not React expert but I find it quite a stretch, because there are components that just need internal state, but it's too verbose/cumbersome/overkill to rely on Redux (or anything like that) for the case. Is there a best practice guide for that?
No, I'm not opposed to the Class-oriented interface though... I think it makes writing stateful components easier. I'm pretty pragmatic about it, I'd rather have clean code that makes sense than subscribe to dogma. That said, I do tend to favor the functional render component most of the time.