Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<script src="//fb.me/react-with-addons-0.13.1.js"></script>
<link href="https://code.jquery.com/ui/1.9.2/themes/smoothness/jquery-ui.css" rel="stylesheet" type="text/css" />
<script src="https://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src="https://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
</body>
</html>
 
var div = React.DOM.div;
var span = React.DOM.span;
var button = React.DOM.button;
var Carousel = React.createFactory(React.createClass({
  getDefaultProps: function() {
    return {pages: ['page 1', 'page 2', 'page 3'], current: 0};
  },
  componentDidUpdate: function(prevProps, prevState) {
    $(this.refs.inner.getDOMNode())
      .animate({marginLeft: this.props.current * -100});
  },
  render: function() {
    return (
      div({className: 'carousel'},
        div({className: 'inner', ref: 'inner'},
          this.props.pages.map(function(page) {
            return span({className: 'page', key: page}, page);
          })))
    );
  }
}));
var App = React.createClass({
  getInitialState: function() {
    return {current: 0};
  },
  onClick: function(which) {
    this.setState({current: which});
  },
  render: function() {
    return (
      div({},
        div({},
          button({onClick: this.onClick.bind(this, 0)}, 'page 1'),
          button({onClick: this.onClick.bind(this, 1)}, 'page 2'),
          button({onClick: this.onClick.bind(this, 2)}, 'page 3')),
        Carousel({
          pages: ['page 1', 'page 2', 'page 3'],
          current: this.state.current
        }))
    );
  }
});
React.render(React.createElement(App), document.body);
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers