Stripe Elements <> React

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>
<script src="https://facebook.github.io/react/js/jsfiddle-integration-babel.js"></script>



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

JavaScript 1.7

class Foobar extends React.Component {
  componentDidMount() {
  	console.log(this._ref.getBoundingClientRect().width)
    setTimeout(() => console.log(this._ref.getBoundingClientRect().width),0);
  }
  componentDidUpdate() {
  	console.log(this._ref.getBoundingClientRect().width)
  }
  render() {
  const styleString = ".SafariTest {font-size: 10px;display: inline-block;position: relative;} .SafariTest input { width: 100%;position: absolute;display: block;}";
  	return (
    	<div ref={(ref) => this._ref = ref} className="SafariTest">
   		<style>
      	{styleString}
    	</style>
			<span>My text</span>
			<input />
			</div>
    );
  }
}


ReactDOM.render(<Foobar />, document.getElementById('mount'));