Hacker News new | past | comments | ask | show | jobs | submit login
Using ES7 Decorators as Mixins (raganwald.com)
16 points by kilimchoi on June 26, 2015 | hide | past | web | favorite | 13 comments

One really useful pattern is React higher-order components, eg. https://github.com/elierotenberg/react-nexus#componentgetnex...

The pattern is

  function decorate(params) {
    return (Component) => class extends React.Component {
      ... // some code using params
      render() {
        return <Component {...this.props} />

I haven't seen that usage for higher-order components before. This is the pattern I've been following:

    function decorate (Component) {
      let HigherOrderComponent = React.createClass({
        render () {
          return <Component {...this.props} />
      return HigherOrderComponent
as explained here: https://medium.com/@dan_abramov/mixins-are-dead-long-live-hi...

They are the same I think, only one has extra parameters. At least in Python, @fn(...args) evaluates the function first and uses the result as a decorator. The guy who wrote the blog post you mention actually uses the parent's pattern in react-dnd.

This works really well with React components

Kinda makes me feel incompetent.

Just started using ES6 in nodejs and here are people already gunning for ES7. Amazing.

The subtext of this article is that underneath all this glitzy new syntax, class mixins are absolutely nothing new. The semantics are the same. The important thing is to focus on the underlying principles and let the syntax evolve as it wishes.

dude, es6 is way too mainstream for cutting edge web programming. If you're not using es7 already you might as well still be using table layouts

I've started writing my own ES9 specification to get a jump on the really cutting-edge stuff, it's influenced by functional languages but only ironically.

Don't stress, while ES7 is exciting (and I'm using parts of it, async/await alone are worth using) a fair bit of it is still up in the air. Unless there are particular features you'd like (for myself that is async/await and decorators), es6 alone is well worth it.

Don't get worked up over this. Let the dust settle and the smoke clear. Take a deep breath and relax. You'll need it in the JS community.

I want to try decorators but I really dislike javascript classes.

You don't have to use them with just classes: https://github.com/wycats/javascript-decorators

All the examples seem to be using classes. I think I am missing something here.

Can you point me to an example without es6 classes?

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact