React Base Fiddle (JSX)

Starting point for creating JSFiddles with React. This uses React with Addons.

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.js"></script>
<script src="https://fb.me/react-with-addons-0.14.0.js"></script>
<script src="https://fb.me/react-dom-0.14.0.js"></script>
<script src="https://facebook.github.io/react/js/jsfiddle-integration-babel.js"></script>

<div id="container">
    <!-- This element's contents will be replaced with your component. -->
</div>

JavaScript 1.7

const { PropTypes } = React;

const HOC = (Component, state, intervalFn) => class extends React.Component {

  constructor(props) {
    super(props);
    this.state = state;
  }
  
  componentWillMount() {
    this.intervals = [];
  }
  
  componentWillUnmount() {  	
    this.intervals.forEach(clearInterval);
  }
  
  componentDidMount() {
  var myChild = new Component();
    this.setInterval(this.tick.bind(this), 1000);
    myChild.trackPageLoad();
  }
  
  setInterval() {
    this.intervals.push(setInterval.apply(null, arguments));
  }
  
  tick() {  	
    this.setState(intervalFn);
  }
  
  render() {    
  
    return <Component {...this.props} {...this.state} />
  }
};

class TickTock extends React.Component {
   TickTockMix
   
	 constructor(props) {
    	super(props);  
      this.TickTockMix = HOC(TickTockMx, { seconds: 6 }, intervalFn);
      console.log(this.TickTockMix);
   }   
   
   trackPageLoad() {
  	console.log('trackPageLoad called');
    this.TickTockMix.trackPageLoad();
  }

   render() {
    return (
        <p>
          React has been running for {this.props.seconds} seconds.
        </p>
    );
   }
}

class TickTockMx extends React.Component {
	 constructor(props) {
    	super(props);    
   }   
   
   trackPageLoad() {
  	console.log('TickTockMx trackPageLoad called');
  }

   render() {
    return null;
   }
}

class Firefly extends React.Component {
	constructor(props) {
  	super(props);
  }
  
  trackPageLoad() {
  	console.log('trackPageLoad called');
  }
  
  render() {
   return null
  }
}

TickTock.propTypes = {
	seconds: React.PropTypes.number.isRequired,
} 

Firefly.propTypes = {
	seconds: React.PropTypes.number.isRequired,
}  

const intervalFn = (state) => {
	return {seconds: state.seconds + 1};
};

//const Wrapped = HOC(TickTock, { seconds: 0 }, intervalFn);
const Wrapped2 = HOC(TickTock, { seconds: 3 }, intervalFn);
const Wrapped3 = HOC(TickTock, { seconds: 6 }, intervalFn);

const FireflyApi = HOC(Firefly, {seconds: 6 },...