React Base Fiddle (JSX)

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

by xufocoder

HTML

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

<div id="reactContainerElement"></div>

JavaScript 1.7

class Root extends React.Component {
  constructor() {
    super();
    this.state = {
      locale: 'en'
    };
  }
  getChildContext() {
		const locale = this.state.locale;
    return {
      setLocale: locale => this.setState({
        locale: locale
      }),
      locale: locale
    }
  }

  render() {
    return <Parent />
  }
}

Root.childContextTypes = {
  setLocale: React.PropTypes.func.isRequired,
  locale: React.PropTypes.string.isRequired
};

class Parent extends React.Component  {
  render() {
    return <Child />;
  }
}

class Child extends React.Component {
  render() {
    const {setLocale, locale} = this.context;
    const setRussianLocale = () => setLocale('ru');

    return (
      <div>
        <div>Application state is '{locale}'!</div>
        <button onClick={setRussianLocale}>
          Set russian locale
        </button>
      </div>
    );
  }
}

Child.contextTypes = {
  setLocale: React.PropTypes.func.isRequired,
  locale: React.PropTypes.string.isRequired
}


ReactDOM.render(
  <Root />,
  document.getElementById('reactContainerElement')
);