JSFiddle - React, Tailwind, and code Playground

by giltig

HTML

<script src="https://npmcdn.com/@reactivex/[email protected]/dist/global/Rx.umd.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.6/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.6/react-dom.js"></script>
<div id="app">
</div>

Babel + JSX

const Batih = props => {
	return <div> {props.whatever} </div>;
}
let oldProps = {whatever: 1}; // should be Monad to save the old props
const purify = Component => props => {
	console.log(oldProps, props);
	if (props.whatever === oldProps.whatever) {
  	console.log('not rendering: ');
  	return false;
  } else {  	
  	console.log('I\'m rendering');
  	oldProps.whatever = props.whatever + 1;    
  	return <Component {...props} />;
  }
}

let Purifier = purify(Batih);
const App = (props) => {
	return (
  		<div>
      	<Purifier {...props} />        
      </div>
    );
}

var data = Rx.Observable.interval(300).scan((x, n) => (x+1)%12, 1);
let subscription = data.subscribe(x => { 
  ReactDOM.render(
  <App whatever={x} />
  , document.querySelector("#app"))
});