React Base Fiddle (JSX)

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

by Tahir Ahmed

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"></div>

CSS

.item { padding: 10px 0; }
.item:nth-child(odd) { background-color: #cc0; }
.item:nth-child(even) { background-color: #0cc; }

.btn-add, .btn-remove { position: fixed; right: 20px; z-index: 1 }
.btn-add { right: 90px; }

.item-transition-enter { opacity: 0; }
.item-transition-enter.item-transition-enter-active {
  opacity: 1;
  transition: opacity 400ms ease-in;
}
.item-transition-leave { opacity: 1; }
.item-transition-leave.item-transition-leave-active {
  opacity: 0;
  transition: opacity 400ms ease-out;
}

JavaScript 1.7

var ReactCSSTransitionGroup = React.addons.CSSTransitionGroup;
var length = 10;

var Item = React.createClass({
	render: function() {
    	return (
        	<div className="item">My index is: {this.props.index}</div>
        );
    }
});

var Hello = React.createClass({
	getInitialState: function() {
    	return { items: [] };
    },
	onAdded: function() {
    	var currentItems = this.state.items;
        currentItems.push(<Item index={currentItems.length} key={currentItems.length} />);
    	this.setState({ items: currentItems });
    },
    onRemoved: function() {
	    var currentItems = this.state.items;
        currentItems.pop();
        this.setState({ items: currentItems });
    },
    render: function() {
    	return (
        	<div className="container">
	            <button className="btn-add" onClick={this.onAdded}>ADD</button>
                <button className="btn-remove" onClick={this.onRemoved}>REMOVE</button>
            	<ReactCSSTransitionGroup transitionName="item-transition" transitionEnterTimeout={500} transitionLeaveTimeout={300} >
                	{this.state.items}
                </ReactCSSTransitionGroup>
            </div>
        );
    }
});
 
ReactDOM.render(
	<Hello name="World" />,
    document.getElementById('container')
);